C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实际参数”,这点和函数有些类似。对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参。带参宏定义的一般形式为:#define 宏名(形参列表) 字符串 在字符串中可以含有各个形参。带参宏调用的一般形式为:宏名...
如定义一个计数变 量,int nCount;这在Windows中是一个很好的变量名,其中nCount的首字母n用来说明这个变量的类型是int。但在Linux下不建议大小写混合 使用,一般标识符只由小写字母,数字和下划线构成。 (3)在失去意义的情况下,尽量使用较短的变量名。 例如有一个变量,用于暂时存储一个计数值,把变量命名为tmp_cou...
"##"被称为 连接符(concatenator),它是一种预处理运算符, 用来把两个语言符号(token)组合成单个语言符号。 这里的语言符号不一定是宏的变量。并且”##”不能作为第一个或最后一个元素存在。 可变宏:…和__VA_ARGS__。在这里宏的参数列表中的最后一个参数可以为省略号,预定义宏__VA_ARGS__就能够用在替...
这里第一个宏名a和下面的指针变量a相同了 那么 int* a不会定义一个指针变量……那么这个a会被上面的宏代替,展开为 int *((int *)addr)宏就是在预处理阶段,把所有的a字符换成((int*)addr);所以定义宏的时候一般全部是大写,因为变量一般没有全大写的....
1>宏名一般用大写字母,以便与变量名区别开来,但用小写也没有语法错误 2>对程序中用双引号扩起来的字符串内的字符,不进行宏的替换操作。比如: 在第1行定义了一个叫R的宏,但是第4行中"Radio"里面的'R'并不会被替换成10 3>在编译预处理用字符串替换宏名时,不作语法检查,只是简单的字符串替换。只有在编译...
对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参。 带参宏定义的一般形式为: #define 宏名(形参列表) 字符串 在字符串中可以含有各个形参。 带参宏调用的一般形式为: 宏名(实参列表); 例如: #define M(y) y*y+3*y //宏定义 ...
在上述代码中,我们使用#include指令包含名为myheader.h的头文件。三、宏 宏是一种基于预处理器指令的编程工具,它可以将一段代码定义为一个宏,并在程序中多次调用,以达到简化代码、提高效率等目的。宏的定义格式为:```C #define macro_name(value) code ```其中,macro_name表示宏的名称,value表示宏的...
include <stdio.h>#define PRINT_VAR(VAR) printf(#VAR)int main(void) {PRINT_VAR(abc);return 0;}
变量命名格式:变量名称第一个单词首字母小写,其余单词首字母大写。 例子:spiArrayNum 函数命名格式:函数名称所有单词首字母都用大写。 例子:GpioConfig 宏定义命名格式:所有字母都用大写,每个单词用下划线分隔。 例子:TASK_ID 常量命名格式:加前缀C,其余字母大写,每个单词用下划线分隔。
宏定义基本语法 每个#define行(即逻辑行)由三部分组成:第一部分是指令 #define 自身,“#”表示这是一条预处理命令,“define”为宏命令。第二部分为宏(macro),一般为缩略语,其名称(宏名)一般大写,而且不能有空格,遵循C变量命令规则。第三部分“替换文本”可以是任意常数、表达式、字符串等。在预处理工作过程中...