用于指定编译器优化存储的宏
预处理运算符# #为宏扩展提供了一种连接实际变元的手段。如果替换文本中的参数用 # #相
连,那么参数就被实际变元替换, # #与前后的空白符被删除,并对替换后的结果重新扫描。例
如,下面定义的宏p a s t e用于连接两个变元:
#define paste( front, back ) front ## back
从而宏调用paste(name, 1)的结果是建立单词n a m e 1。
宏定义要看你怎么用了。 例如#define NEWLINE printf("\n") 你在用的时候就要把NEWLINE当作是一条语句或函数后面要加分号才可以。 若#define NEWLINE printf("\n"); 那你在使用这个宏的时候只要写NEWLINE就可以了。 PS.如果你宏定义中有分号,使用的时候加不加分号都行,因为多的那个分号可以认为是空语句。但是宏定义没有加分号,使用宏的时候就要记着加分号。所以你测试时只把宏定义的分号去掉了,肯定会报某个语句之前parse错误
因为有许多这种定义是在.h文件中写的,会被多个源文件引用,当需要某些定义在整个编译过程中只被定义一次时,就用到这种方式:
#ifndef xxxxx //如果没定义过...那么才执行下面内容
#define xxxxx //定义这个标识,使再遇到上行判断时被跳过不执行
...
#endif //定义结束