了解c语言的条件编译1

简言

  条件编译,可以让我们在测试的时候提供了很多方便,当然也减少程序的体积.

来个上上手

1. #if #else #endif

#define ISDEBUG 1

int main(int argc, char *argv[])
{

#if ISDEBUG == 1
	printf("if debug version!\n");
#else
	printf("if release version!\n");
#endif
	return 0;
}

运行 输出if debug version! 看看生成预编译的文件.

int main(int argc, char *argv[])
{
 printf("if debug version!\n");
 return 0;
}

 这就是为什么上面说,减少代码体积,在预编译的时候,不满足条件的代码已经给处理掉了.

2. #if #elif #else #endif  判断多种情况的时候使用

#define VAL 2

int main(int argc, char *argv[])
{
#if   VAL == 1
	printf("TEST=%d", TEST);
#elif VAL == 2
	printf("TEST=%d", VAL);
#elif VAL == 3
	printf("TEST=%d", TEST);
#else
	printf("TEST=%d", TEST);
#endif 
	return 0;
}

3. #ifdef #endif   判断宏存在的时候

int main(int argc, char *argv[])
{
#ifdef VAL
	printf("TEST is exists");
#endif 
	return 0;
}

4. #ifndef #endif 判断宏不存在,可用于判断是否引入头文件

test.h

#ifndef TEST

#define TEST

//注意:只声明变量,不初始化,不然如果有两个c文件引入test.h头文件,
//就会出现_num 已经在 xxx.obj 中定义
int num;

#endif


秋风 2016-08-13