1. 简单宏定义
简单的宏定义有如下格式:
[#define指令(简单的宏)] #define 标识符替换列表
替换列表是一系列的C语言记号,包括标识符、关键字、数、字符常量、字符串字面量、运算符和标点符号。当预处理器遇到一个宏定义时,会做一个 “标识符”代表“替换列表”的记录。在文件后面的内容中,不管标识符在任何位置出现,预处理器都会用替换列表代替它。
不要在宏定义中放置任何额外的符号,否则它们会被作为替换列表的一部分。一种常见的错误是在宏定义中使用 = :
代码语言:javascript复制#define N = 100 /*** WRONG ***/
int a[N]; /* 会成为 int a[= 100]; */
在上面的例子中,我们(错误地)把N定义成一对记号(= 和100)。
在宏定义的末尾使用分号结尾是另一个常见错误:
代码语言:javascript复制
#define N 100; /*** WRONG ***/
int a[N]; /* become int a[100;]; */
这里N被定义为100和;两个记号。
在一个宏定义中,编译器可以检测到绝大多数由多余符号所导致的错误。但不幸的是,编译器会将每一处使用这个宏的地方标为错误,而不会直接找到错误的根源——宏定义本身,因为宏定义已经被预处理器删除了。
原文链接:https://blog.csdn.net/hguisu/article/details/7470695
简单的宏主要用来定义那些被Kernighan和Ritchie称为“明示常量”(manifest constant)的东西。使用宏,我们可以给数值、字符和字符串命名。
代码语言:javascript复制#define STE_LEN 80
#defineTRUE 1
#defineFALSE 0
#definePI 3.14159
#defineCR 'r'
#defineEOS '