在编译一个程序的时候我们如果将一条语句(一组语句)编译或者放弃是很方便的。因为我们有条件编译指令。
比如:
调试性的代码,删除可惜,保留又碍事,所以我们可以选择性的编译
#include <stdio.h>
// 这里只要定义了就行,给不给值无所谓
#define __DEBUG__
int main()
{
int arr[10] = {0};
for (int i = 0; i < 10; i++)
{
arr[i] = i;
// 对于下面这行代码,我们希望在查看数组结果的时候,调试能看到结果
// 但是在真正执行程序的时候,我们并不希望这个代码进行编译运行
// 所以我们决定使用条件编译指令完成这个功能
#ifdef __DEBUG__ // 如果 __DEBUG__ 这个被定义过,就会执行下边的语句,如果没有就执行
printf("%d ", arr[i]);
#endif
}
return 0;
}
常见的条件编译指令
1、
#if 常量表达式
// ...;
#endif
- 常量表达式由预处理器求值,比如:
#define __DEBUG__ 1
#if __DEBUG__
- 也就是说 if后面跟的是非0值就为真,0位假
也可以定义为#if 3-2
这种表达式
//…
#endif
2、多个分支的条件编译
#if 常量表达式
//...
#elif 常量表达式
//...
#else
//...
#endif
3、判断是否被定义
#if defined(symbol)
// 这两个是等价的
#ifdef symbol
//...
#endif
#if !defined(symbol)
#ifndef symbol
//...
#endif
4、嵌套指令
#if defined(OS_UNIX)
#ifdef OPTION1
unix_version_option1();
#endif
#ifdef OPTION2
unix_version_option2();
#endif
#elif defined(OS_MSDOS)
#ifdef OPTION2
msdos_version_option2();
#endif
#endif