news 2026/7/2 1:55:02

C语言 6——编译预处理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言 6——编译预处理

宏定义和调用

无参数的宏定义(宏常量)

如果在程序中大量使用到了某个值,那么为了方便管理,我们可以将其定义为:const int NUM = 100;但如果我们使用NUM定义一个数组,在不支持C99标准的编译器上是不支持的,因为NUM不是一个编译期常量,如果想到了一个编译器常量,那么可以使用:#define NUM 100

在编译预处理时,将程序中在该语句以后出现的所有的NUM都用100代替。这种方法使用户能以一个简单的名字代替一个长的字符串,在预编译时将宏名替换成字符串的过程称为“宏展开”。宏定义,只在宏定义的文件中起作用

宏名一般大写,以便于与变量区分

宏定义可以是常数、表达式等

宏定义不做语法检查,只有在编译被宏展开后的源程序才会报错

宏定义不是C语言,不在行末加分号

宏名有效范围从定义到本源文件结束

可以用#undef 命令种植宏定义的作用域

在宏定义中,可以引用已定义的宏名

NUM不能被赋值

带参数的宏定义(宏函数)

在项目中,经常把一些短小而又频繁使用的函数写成宏函数。宏通过使用参数,可以创建外形和作用都与函数类似的类函数宏。宏的参数也用圆括号括起来

eg:#define SUM(x,y) (x + y) (带参数的宏定义一般会加上括号,防止运算的优先级别导致代码出错,因为宏定义展开是将内容原封不动的替换)

文件包含处理

文件包含处理

“文件包含处理”是指一个源文件可以将另外一个文件的全部内容包含进来。C语言提供了#include 命令用来实现“文件包含”的操作

#include<>和#include""区别

“” 表示系统先在file1.c所在的当前目录找file1.h,如果找不到,再按系统指定的目录检索

<>表示系统直接按系统指定的目录检索

注意:

1.#include<>常用于包含库函数的头文件

2.#include""常用于包含自定义的头文件

3.理论上#include 可以包含任意格式的文件(.c .h等),但一般用于头文件的包含

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 12:22:12

使用Terraform定义GLM-TTS云上基础设施即代码部署模板

使用Terraform定义GLM-TTS云上基础设施即代码部署模板 在生成式AI浪潮席卷各行各业的今天&#xff0c;语音合成技术正从“能说”迈向“像人说”的新阶段。特别是零样本语音克隆能力的突破&#xff0c;让仅凭几秒音频就能还原说话人音色成为现实——这正是 GLM-TTS 这类前沿开源…

作者头像 李华
网站建设 2026/7/1 14:39:59

GLM-TTS能否支持婚礼主持?喜庆氛围语音风格迁移

GLM-TTS能否支持婚礼主持&#xff1f;喜庆氛围语音风格迁移 在一场婚礼上&#xff0c;主持人的一句“百年好合”如果语气生硬、节奏平缓&#xff0c;可能瞬间削弱仪式感&#xff1b;而若语调上扬、情感饱满&#xff0c;则能点燃全场气氛。这种微妙的情绪传递&#xff0c;正是传…

作者头像 李华
网站建设 2026/7/1 14:47:34

基于GLM-TTS的情感语音标注数据集构建方法研究

基于GLM-TTS的情感语音标注数据集构建方法研究 在虚拟助手越来越“懂人心”、有声读物开始传递情绪起伏的今天&#xff0c;语音合成早已不再满足于“把字念出来”。用户期待的是会笑、会叹气、能愤怒也能温柔的声音。这种从“工具性发声”向“情感化表达”的跃迁&#xff0c;正…

作者头像 李华
网站建设 2026/7/1 21:15:58

语音合成中的上下文记忆能力:维持多轮对话一致性

语音合成中的上下文记忆能力&#xff1a;维持多轮对话一致性 在虚拟助手与用户连续对话时&#xff0c;突然从温柔女声变成低沉男音&#xff1b;或是有声书读到第三章&#xff0c;主角的口吻却和第一章判若两人——这类体验断裂的问题&#xff0c;在传统语音合成系统中屡见不鲜。…

作者头像 李华
网站建设 2026/7/1 12:22:18

Zephyr多级省电模式对比分析:快速理解差异

Zephyr 多级省电模式深度解析&#xff1a;从原理到实战的功耗优化指南在物联网设备日益普及的今天&#xff0c;一块电池能撑多久&#xff0c;往往直接决定了产品的成败。尤其是那些部署在偏远地区、无法频繁更换电池的传感器节点——比如森林里的温湿度监测器、贴在货架上的电子…

作者头像 李华
网站建设 2026/7/1 22:28:28

es连接工具接入Kibana的完整示例

手把手教你打通 Kibana 与 Elasticsearch 的“任督二脉”你有没有遇到过这种情况&#xff1a;Kibana 启动了&#xff0c;页面也打开了&#xff0c;但一进去就提示“Unable to connect to Elasticsearch”&#xff1f;或者图表加载半天没反应&#xff0c;日志里一堆request time…

作者头像 李华