是为了防止这个.h头文件被重复include #ifdef的使用和#if defined()的用法一致 #ifndef又和#if !defined()的用法一致。 三、指令 用途 # 空指令,无任何效果 #include 包含一个源代码文件 #define 定义宏 #undef 取消已定义的宏 #if 如果给定条件为真,则编译下面代码 #ifdef 如果宏已经定义,则编译下面代码 #...
一元运算符 defined 可以出现在 #if 或 #elif 命令的条件中。它的形式如下: defined 标识符 defined (标识符) 如果指定的 identifier 是一个宏名称(也就是说,它已被 #define 命令定义,并且未被 #undef 命令取消定义),则 defined 表达式会生成值 1。否则,defined 表达式会生成值 0。 defined 运算符相对于 #...
现在先定义LETTER为1,这样在预处理条件编译命令时,由于LETTER为真(非零),则对第一个if语句进行编译,运行时使小写字母变大写。如果将程序第一行改为: #define LETTER 0 则在预处理时,对第二个if语句进行编译处理,使大写字母变成小写字母(大写字母与相应的小写字母的ASCII代码差32)。此时运行情况为: c language ...
1、#if 和#ifdef 当asd_eee表达式存在而且,值为ture的时候接续向下执行 例如 代码语言:javascript 复制 #defineTARGET_LITTLE_ENDINA1#defineTARGET_BIG_ENDINA0#ifdefTARGET_LITTLE_ENDINAcall little endinafunction#elsecall big endinafunction#endif 上面的今天写的代码,发现我不管把TARGET_LITTLE_ENDINA和TARGET...
一元运算符 defined 可以出现在 #if 或 #elif 命令的条件中。它的形式如下:defined 标识符 defined (标识符)如果指定的 identifier 是一个宏名称(也就是说,它已被 #define 命令定义,并且未被 #undef 命令取消定义),则 defined 表达式会生成值 1。否则,defined 表达式会生成值 0。defined 运算符相对于 #...
if 指令可以根据给定的条件编译相应的代码段。其基本形式如下:if 条件语句 程序段1 endif 程序段2 当条件语句成立时,程序段1将被编译,否则编译程序段2。它并不关心预处理器是否已经定义了某个标识符,仅根据给定条件进行判断。ifndef x //先测试x是否被宏定义过 define 程序段1 endif 程序段2 这...
而if 语句则不然,if 是 C 语言中的关键字,它根据表达式的计算结果来觉定执行那个语句,它里面的每个分支都编译了的, 如 #define A 0 if(A>1) printf("A > 1");//编译器编译该语句,但因为A == 0 未执行 elseif(A==1) printf("A == 1");//编译器编译该语句,但因为A == 0 未执行 ...
#define定义宏 #undef取消已定义的宏 #if如果给定条件为真,则编译下面代码 #ifdef如果宏已经定义,则编译下面代码 #ifndef如果宏没有定义,则编译下面代码 #elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 #endif结束一个#if……#else条件编译块 ...
并且不能以数字开头。此外,用户标识符不能与C语言的关键字相同,如if、int等。定义用户标识符时,建议使用有意义的名称,以便于代码的可读性和维护。总之,#define用于宏定义,if用于条件判断,而用户标识符则是通过类型名定义的变量或函数名称,它们各自有明确的用途和定义规则。
最后需要注意的是,#if 后面跟的是“整型常量表达式”,而 #ifdef 和 #ifndef 后面跟的只能是一个宏名,不能是其他的。 例如,下面的形式只能用于 #if: #include<stdio.h>#define NUM 10intmain(){#if NUM == 10 || NUM == 20printf("NUM: %d\n",NUM);#elseprintf("NUM Error\n");#endifreturn0...