标签:
代码中经常看到 #define ,#ifdef
#define :明显常量 一般的指令长度仅限与一行代码,除了\(反斜杠线)可以拓展到下一行外。
一般情况下,每个#define行由三个部分组成。
宏还可以使用参数,可以创建外形和作用都与函数相似的类函数宏。宏的参数用圆括号括起来
宏的参数与函数的参数不完全一样
程序运行时,函数调用把参数的值传递给了函数,而编译前,宏调用把参数的语言符号传递给程序。
#define SQUARE(X) X*X x=4 Evaluating SQUARE(x) : The result is 16 //A Evaluating SQUARE(2) : The result is 4 //B Evaluating SQUARE(x+2) : The result is 14 //C Evaluating 100 / SQUARE(2) : The result is 100 //D
对于A、B结果无异。但是其他结果却不一样。
c中 原本的 X*X 代入参数应为 x+2*x+2
D中 为100/2*2 所以应先算 100/2
条件编译:
#ifdef MAVIS
#define X 5
#else
#define X 6
#endif
#ifdef指令说明,如果预处理器已经定义了后面的标志符 MAVIS ,则执行所有指令并编译代码,直到下一个#else 或 #endif 出现为止。如果没有定义后面的标志符号MAVIS则执行#else后面的指令和编译,直到#endif为止。 类似于c中的if else。而#ifndef 则是判断后面的标志符是否为未定义的,如果后面的标志符是没有定义的就执行下面的。
#if
#elif 更像c中的if,
而这些一般后面跟常量整数表达式,若非0则为真。 defined是预处理运算符//defined(para),如果他的参数已经用#define定义过,则返回真,否则返回0
标签:
原文地址:http://www.cnblogs.com/hams/p/5017603.html