1、#if
● 格式:
#include <stdio.h>
using namespace std;
int main() {
//用法1
//条件编译中要求判断条件必须都为“整形常量表达式”,不可以为变量,并且结果必须为整型
#if _WIN32
printf("这是windows系统。\n");
#elif _linux_
printf("这是linux系统。\n");
#else
print("未知系统!\n");
#endif
//用法2
#if _WIN32
printf("这是windows系统2。\n");
#else
print("未知系统!\n");
#endif
return 0;
}
2、#ifdef
#include <stdio.h>
using namespace std;
int main() {
// #else 可以删除
// 意思是如果当前宏已被定义过,则对第一程序段进行编译,否则对第二程序段进行编译
// 当以 Debug 模式编译程序时,宏 _DEBUG 会被定义,预处器会保留第 5 行代码,删除第 7 行代码。反之会删除第 5 行,保留第 7 行。
#ifdef _DEBUG
printf("正在使用 Debug 模式编译程序...\n");
#else
printf("正在使用 Release 模式编译程序...\n");
#endif
return 0;
}
3、#ifnder
#include <stdio.h>
using namespace std;
int main() {
// #else 可以删除
// 意思是如果当前宏未被定义过,则对第一程序段进行编译,否则对第二程序段进行编译
// 与 #ifdef 相反
#ifndef _DEBUG
printf("正在使用 Debug 模式编译程序...\n");
#else
printf("正在使用 Release 模式编译程序...\n");
#endif
return 0;
}
4、三种区别
● #if 后面跟的是 " 整型常量表达式 ";
● #ifder 和 #ifndef 后面跟的只能是一个宏名,不可以是其他的;