常量表达式可以是包含宏, 算术运算, 逻辑运算等等的合法C常量表达式, 如果常量表达式为一个未定义的宏, 那么它的值被视为0. #if MACRO_NON_DEFINED == #if 0 在判断某个宏是否被定义时, 应当避免使用#if, 因为该宏的值可能就是被定义为0. 而应当使用下面介绍的#ifdef或#ifndef. 注意: #if, #elif, #...
你可以使用#ifdef(#if defined) 或#ifndef(#if not defined) 来检查常量是否有被定义。 你可以使用#undef来解除对一个常量的定义。 例如: #ifdefPI//do sth.#endif#ifndefPI//do sth.#endif#undefPI//PI is not defined since then! 以上内容仅适用于#define宏,不适用于const。 2.多重包含防范 语法&示...
#define命令定义一个宏: #define MACRO_NAME(args) tokens(opt) 之后出现的MACRO_NAME将被替代为所定义的标记(tokens). 宏可带参数, 而后面的标记也是可选的. 对象宏 不带参数的宏被称为"对象宏(objectlike macro)" #define经常用来定义常量, 此时的宏名称一般为大写的字符串. 这样利于修改这些常量. e.g....
若macro有定义: `#ifdef()`会判断为true `#ifdef()`会判断为false 若macro没有定义 `#ifdef()`会判断为false `#ifndef()`会判断为true 举例来说: #include <stdio.h> #define test1 1 #define test2 0 int main(){ #ifndef test1 // #if !defined(test1) printf("test1 is not defined...\n"...
也经常用于大段代码注释.e.g.#if 0 一大段代码;#endif常量表达式可以是包含宏, 算术运算, 逻辑运算等等的合法C常量表达式, 如果常量表达式为一个未定义的宏, 那么它的值被视为0.#if MACRO_NON_DEFINED = #if 0在判断某个宏是否被定义时, 应当避免使用#if, 因为该宏的值可能就是被定义为0. 而应当使用...
defined macro-name 若macro-name当前被定义,则表达式为真返回1,否则为假返回0。 defined与#if, #elif, #else结合使用来判断宏是否被定义, 乍一看好像它显得多余, 因为已经有了#ifdef和#ifndef,其实使用defined的一个原因是,它允许被做为#ifdef与#ifndef,#elif的判断条件(如:由#elif语句确定宏名字存在),因此显...
针对不同的平台使用执行不同的语句. 也经常用于大段代码注释. e.g. #if 0 { 一大段代码; } #endif 常量表达式可以是包含宏, 算术运算, 逻辑运算等等的合法C常量表达式, 如果常量表达式为一个未定义的宏, 那么它的值被视为0. #if MACRO_NON_DEFINED == #if 0 在判断某个宏是否被定义时, 应当避免...
#ifndef MATH_FUNCTIONS_H:这是一个条件编译指令,ifndef 是“if not defined” 的缩写。它检查 MATH_FUNCTIONS_H 这个宏是否已经被定义了。 #define MATH_FUNCTIONS_H:这是一个宏定义指令,它定义了 MATH_FUNCTIONS_H 这个宏。由于之前的条件判断没有找到这个宏的定义,这个 define 将会执行,将 MATH_FUNCTIONS_H...
46、argumentsyntaxerror宏参数语法错误macroexpansiontoolong宏的扩展以后太长mismatchednumberofparametersindefinition定义中参数个数不匹配misplacedbreak此处不应出现break语句misplacedcontinue此处不应出现continue语句misplaceddecimalpoint此处不应出现小数点misplacedelifdirective不应编译预处理elifmisplacedelse此处不应出现elsemispl...
59: Macro argument syntax error — 宏参数语法错误60: Macro expansion too long — 宏的扩展以后太长61: Mismatched number of parameters in definition — 定义中参数个数不匹配62: Misplaced break — 此处不应出现break语句63: Misplaced continue — 此处不应出现continue语句64: Misplaced decimal point —...