这个程序是编译不过去的,因为宏定义在同名函数定义之前,预编译到print函数时,其名称也被当做宏进行处理,预编译完毕后,编译器编译是程序显然是不对的。如果程序的文件名称是test.c,则linux环境可以通过命令gcc -E test.c > test.i,可以看到预编译结果,有心者可以自己分析下,仔细看看print函数的预编译结果。 如果...
The square of8is64 2. ##运算符可以用于宏函数的替换部分 ##就是个粘合剂,将前后两部分粘合起来,也就是有“组成变量名”的意思。特别要和#运算符的功能区分开来,#是连接字符串,而##是连接变量名。 但是“##”不能随意粘合任意字符,必须是合法的C语言标示符。在单一的宏定义中,最多可以出现一次“#”或...
如果二者作用域没有交叉,那么可以把函数名定义为static。或者在使用宏的地方,不要声明该函数。否则,只能改掉其中一个名字。推荐宏名用全大写字母。函数名用全小写字母或者单词开头字母大写。 这样就不会冲突了。而且根据名字 一眼就可以看出来是宏还是函数。
C函数库中描述 一个函数的任何宏定义都可以通过用括号把函数名括住来局部抑制他,因为这个名字后面没有跟着指示宏函数名展开的左括号
变量命名格式:变量名称第一个单词首字母小写,其余单词首字母大写。 例子:spiArrayNum 函数命名格式:函数名称所有单词首字母都用大写。 例子:GpioConfig 宏定义命名格式:所有字母都用大写,每个单词用下划线分隔。 例子:TASK_ID 常量命名格式:加前缀C,其余字母大写,每个单词用下划线分隔。
为方便各位小伙伴学习C语言,小编为大家整理了一批资料,供大家交流学习,下面就跟随爱站技术频道的编辑就先教你解决C语言,函数名与宏冲突吧。 #include void f() { printf("function\n"); } #define f() printf("macro\n") int main() { f(); // macro ...
1.简洁明了:宏函数参数的名称应简洁明了,便于记忆和理解,避免使用冗长或难以理解的名称。 2.准确描述参数含义:参数名称应准确描述其含义,便于其他开发者快速理解其作用。例如,如果宏函数参数用于指定数组的大小,则可以将其命名为“array_size”。 3.避免使用模糊或容易混淆的名称:宏函数参数的名称应避免使用模糊或容...
Func 是你自己定义的函数的名字。 例:void func1(int i),其中void指的是返回值类型是空,默认情况下指的是int型,func1是你定义的函数名,int i是你定义一个形式参数,类型是整型的
换个函数名或换个宏名都可解决。
关于C语言宏的叙述中正确的是( )。 A. 宏名必须用大写字母表示 B. 宏定义必须位于源程序中所有语句之前 C. 宏调用比函数调用耗费时间 D. 宏替换没有数据类型限