这也是C语言中最常见的宏定义写法,这样的代码在预处理的时候直接被替换。 在C语言中,还有两种宏定义容易被忽略。 一种是预定义宏,顾名思义,就是别人预先定义好的,拿过来用就行。 常见的比如file line date time 分别表示文件名、行号、日期和时间,主要就是让用户用起来更方便。 还有一种定义宏的方式,是在编...
预处理器指令以井号(#)为开始,常见的预处理功能包括宏定义、条件编译和文件包含等。下面介绍C语言预处理器提供的三种基本功能: 1.宏定义(Macro Definition) 使用#define预处理指令可以定义宏,这让你可以给一个常数值定义一个名字,或者定义一个宏函数,用以在编译之前替换代码中的某些文本。 例子: #definePI 3.14159...
printf(_VA_ARGS_#endiftokens中的_VA_ARGS_被替换为函数宏定义中的"."可变参数列表.& 36、#160;注意在使用#define时候的一些常见错误:#define MAX = 100#define MAX 100;=, ; 的使用要值得注意. 再就是调用函数宏是要注意, 不要多给出"".注意: 函数宏对参数类型是不敏感的, 你不必考虑将何种数据...
这个宏定义实现了一个调试信息输出的功能。当编译时定义了DEBUG宏时,调用DEBUG_PRINT会将信息输出到标准错误流中;否则,DEBUG_PRINT会被替换为空语句。 字符串处理 宏可以用于字符串的处理,比如将多个字符串连接在一起,或者将字符串转换为标识符。下面是一些示例: #define STR(x) #x // 将宏参数转换为字符串 #...
宏是C/C++所支持的一种语言特性,我对它最初的印象就是它可以替换代码中的符号,最常见的例子便是定义一个圆周率PI,之后在代码中使用PI来代替具体圆周率的值。 确实如此,宏提供了一种机制,能够使你在编译期替换代码中的符号或者语句。当你的代码中存在大量相似的、重复的代码时,使用宏可以极大的减少代码量,便于书...
常见的宏定义分为两种:无参宏定义和带参宏定义。2. 无参宏定义 定义格式:替换列表里面可以是数值常数、字符常数、字符串常数等,因此可以理解为使用标识符来表示常量,所以也被叫作符号常量。预处理指令不是语句,因此在预处理指令的末尾是无需加上分号的。如果加上分号,可能会获得超出预期的结果。虽然预处理...
C语言中的宏定义是最常用的组成部分之一,他们在编程时有重要作用,正确应用可以减少很多代码工作量,但是使用过渡,则会造成可读性降低。对于宏定义,需要注意以下说明: (1)宏名一般用大写; (2)使用宏可以提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改; ...
Linux内核中C语言宏的常见用法 2.1 — 常量定义宏 1 使用#define定义常量 在C语言中,可以使用预处理器指令 #define 来定义常量。定义常量的语法如下: #define常量名 常量值
19. 使用一些宏跟踪调试 A N S I标准说明了五个预定义的宏名。它们是: 1_ L I N E _ 2_ F I L E _ 3_ D A T E _ 4_ T I M E _ 5_ S T D C _ 如果编译不是标准的,则可能仅支持以上宏名中的几个,或根本不支持。记住编译程序也许还提供其它预定义的宏名。_ L I N E _及_ ...
2.1 常见形式: #define 宏名 替代文本 // 替代文本可以是列表,也可以为空(即什么都没有,仅此声明宏名而已) #define GOOD // 空宏 空宏为啥会存在? 空的宏的作用是预留下以后平台移植时的其它选项的定义,是为了移植的方便。 跟条件编译一起用:#define GOOD ; #ifdef GOOD ...