#ifndef指令和#ifdef指令的逻辑相反,#ifndef指令判断后面的标识符是否是未定义的,常用于定义之前未定义的常量,如:#ifndef指令也可以和#else、#endif一起使用 通常,包含多个头文件时,其他的文件可能包含相同的宏定义,#ifndef指令可以防止相同的宏被重复定义。在首次定义一个宏的头文件中用#ifndef指令激活定义,随...
#defineXXX 0// 第二段条件编译#ifXXX逻辑1#else逻辑2#endif 区别: #if既关心宏是否定义,又关心宏的逻辑的真假。 #ifdef(#if defined())、#ifndef(#if !defined())仅仅关心宏是否被定义,不关心宏的逻辑真假。 #if 0 用于代替/* */注释 当屏蔽掉大块代码时,使用"#if 0"比使用"/**/"要好。(因为用...
#ifndef是if not defined的缩写,也可以写成#if !defined 即如果没有定义; #ifdef是if defined的缩写,也可以写成#if defined 即检查是否定义过; 4、#ifdef 和 #if defined 的区别 #ifndef 与#if !defined 的区别相类似,都在于后者可以组成复杂的预编译条件,前者只判断单个宏是否定义 例如: #if defined(PERL_...
# ifdef #ifndef #if等用法 1、文件中的#ifndef 头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。 还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会...
2:情况2: #ifndef _XXXX ...程序段1... #else ...程序段2... #endif 这里使用了#ifndef,表示的是if not def。当然是和#ifdef相反的状况(如果没有定义了标识符_XXXX,那么执行程序段1,否则执行程序段2)。3:情况3:#if 常量 ...程序段1...#else...程序段2...#endif 这里表示,如果常量为真(非0...
1、意义不同 开头的都是预编译指令,就是在正式编译之前,编译器做一些预处理的工作,所以说#if与#ifdef、#ifndef都是,而if是判断语句,不是预编译指令。2、用法 if是条件语句,在运行的过程中根据条件的值选择执行不同的语句。#if是条件编译语句,在编译阶段执行,如果后面跟的条件成立,就编译对应...
条件编译区域以 #if、#ifdef 或 #ifndef 等命令作为开头,以 #endif 命令结尾。条件编译区域可以有任意数量的 #elif 命令,但最多一个 #else 命令。以 #if 开头的条件编译区域具有下面的格式: #if 表达式1 [组1] [#elif 表达式2 [组2]] ...
#undef,#ifdef,#ifndef,#if的用法 #undef #undef 是在后面取消以前定义的宏定义 该指令的形式为 #undef 标识符 其中,标识符是一个宏名称。如果标识符当前没有被定义成一个宏名称,那么就会忽略该指令。 一旦定义预处理器标识符,它将保持已定义状态且在作用域内,直到程序结束或者使用#undef 指令取消定义。 在此...
#if #ifdef #ifndef #undef 条件编译 1、#if命令 #if的基本含义:如果#if命令后的参数表达式为真,则编译#if到#endif之间的程序段,#endif 命令用来表示#if段的结束,否则跳过这段程序。 #if命令的一般格式如下: #if 常数表达式 语句段 #endif 1.
#ifndef_TEST_H_ #define _TEST_H_ #endif if elif else #define C 1 #if CPP printf("CPP\n"); #else printf("NO CPP!\n"); #endif #define STR(x) #x int num = 123456; char* s = STR(num); printf("%s\n", s); #define CONT(x,n) (x##e##n) ...