宏定义是属于预处理指令,因此发生在预处理阶段,也就是在源代码编译之前。而函数是发生在程序运行期间的。5.3 内存空间 宏定义只是简单的文本替换,把替换列表中的内容取代标识符的位置,替换完就会删除所有对应的标识符。因此,宏定义的参数是不需要分配空间的。函数每次调用的时候,系统都会给形式参数重新分配一块...
宏(Macro),是一种批量处理的称谓。计算机科学里的宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定的文本模式。解释器或编译器在遇到宏时会自动进行这一模式替换。 2、C语言宏定义的常规用法 1) 定义符号常量 #definePI 3.1415926#defineMAX_N 10000 2) 定义傻瓜表达式(注意,定义的这种表达式一不小心...
C语言预处理器主要分为6个方面,分别是条件编译指令、包含指令、宏替换指令、控制指令、文件名和行信息指令、诊断信息指令等。前两篇介绍了条件变编译指令和编译器控制指令#pragma的组合参数,今天将介绍诊断指令、文件名和行信息指令以及相关的预定义宏等。诊断指令:#error和#warning #error现代主流的编译器都已经...
* 不带参数的宏定义: * 一般形式: #define 宏名 字符串 \ #define ABC 10 * 右边的字符串也可以省略,比如#define ABC * 作用:在编译预处理时,将源程序中所有"宏名"替换成右边的"字符串",常用来定义常量。 * 使用习惯与注意: * 1、 宏名一般用大写字母,以便与变量名区别开来,但用小写也没有语法错误...
常见的宏定义分为两种:无参宏定义和带参宏定义。 2. 无参宏定义 定义格式: #define 标识符 替换列表 替换列表里面可以是数值常数、字符常数、字符串常数等,因此可以理解为使用标识符来表示常量,所以也被叫作符号常量。 预处理指令不是语句,因此在预处理指令的末尾是无需加上分号的。如果加上分号,可能会获得超出...
一、不带参数的宏定义 1.一般形式 #define宏名字符串 比如#define ABC 10 右边的字符串也可以省略,比如#define ABC 2.作用 它的作用是在编译预处理时,将源程序中所有"宏名"替换成右边的"字符串",常用来定义常量。 接下来写个程序根据圆的半径计算周长 ...
C语言中的常见预定义宏: __LINE__:表示当前代码所在的行号。 __FILE__:表示当前代码所在的文件名。 __DATE__:表示当前编译的日期,格式为“Mmm dd yyyy”的形式,例如“Apr 12 2023”。 __TIME__:表示当前编译的时间,格式为“hh:mm”的形式,例如“14:55:30”。 __STDC__:当编译器以标准C模式编译时...
在C语言中,预定义宏是由编译器提供的一组特殊标识符,可以在程序中直接使用,无需进行额外的定义。 预定义宏可以提供有关源文件、行号、日期、时间和函数名等信息,对于调试和日志记录非常有用。 一、人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。
通过预定义宏,程序员使用“#ifdef”与“#endif”等预处理指令,就可使平台相关代码只在适合于当前平台的代码上编译,从而在同一套代码中完成对多平台的支持。从这个意义上讲,平台信息相关的宏越丰富,代码的多平台支持越准确。 2、C标准预定义宏 标准C 语言提供的一些标准预定义宏如表 1 所示。