宏定义是C语句,它们定义的是一些常用的代码片段,可以在程序中多次使用,以提高代码的复用性和可读性。在定义宏的时候,需要使用#define关键字将宏名和替换文本定义起来,由于宏定义本身就是一条C语句,所以在行末需要加上分号来表示语句的结束。否则会导致编译错误,导致程序无法正常运行。答案:A 宏定义是一种预处理指令...
宏定义中可以包含其他宏,即嵌套宏; 预处理部分不是C语言的定义语句,所以宏定义完成之后是不带分号(😉的 2..1.2 宏的作用域: 由#define的作用域从文件中的的定义点开始,直到用#undef指令取消宏为止或者直到文件尾为止(由二者中最先满足的那个结束宏的作用域)。 2.1.3 宏的作用: 很大程度上是为了提高代码的...
1.C语言宏定义为何不用分号结束?为什么要做这样的规定?答:因为#define语句属于编译预处理,它不属于c语言语句。c语言规定每一条语句后面要加上分号,但编译预处理不是c语言语句,所以不必遵守此规定。2. 一行多长?80字节?255字节?如果仍然不够怎么办?答:一行的长度与具体的操作系统和编译器的设...
预处理命令行的最后不能以分号表示结束 C. #define MAX 是合法的宏定义命令行 D. C程序对预处理命令行的处理是在程序执行的过程中进行的 2以下叙述中错误的是( ) A. 在程序中凡是以"#”开始的语句行都是预处理命令行 B. 预处理命令行的最后不能以分号表示结束 C. #define MAX 是合法的宏定义命令行 ...
4>宏名的有效范围是从定义位置到文件结束。如果需要终止宏定义的作用域,可以用#undef命令 PI这个宏在第1行到第8行之间是有效的,第8行后就无效了 5>定义一个宏时可以引用已经定义的宏名 二、带参数的宏定义 1.一般形式 #define宏名(参数列表) 字符串 ...
问题就出在 spin_unlock(lock); 后面的这个分号“;”,如果不写就不像函数调用,如果写了就会引发语法错误——if 语句会被这个“;”提前结束,else 无法与其配对。这么看来,在C语言的“函数式宏定义”中使用 do{}while(0) 包裹C语言代码显然就是一个不错的方法了。
宏定义以换行结束,不需要分号等符号作分隔符。如有以下定定义: # define PI 3.1415926;原希望用PI求圆的周长的语句 c2*PI*r;经宏展开后,变成 c2*3.1415926*r;这就不能达到希望的要求。 带参数宏定义进一步扩充了无参数宏定义的能力,在字符序列替换同时还能进行参数替换。带参数定定义的一般形式为 # define ...
(1).宏名一般用大写 (2).宏定义末尾不加分号; (3).可以用#undef命令终止宏定义的作用域 (4).宏定义可以嵌套 (5).字符串“”中永远不调用宏 #define NAME zhang 程序中有"NAME",它不会被替换 (6).宏替换在编译前进行,不分配内存,变量定义分配内存,函数调用在编译后程序运行时进行,并且分配内存 ...
75宏定义命令是以分号结束的.错 76带参数的宏定义只能有1个或2个参数.错 77文件包含命令所包含的文件是不受限制的.错 78条件编译命令只在编译时才有作用.对 79预处理命令的主要作用是提高效率.错 80复合语句就是分程序.错 81条件语句不能作为多路分支语句.错 ...