C 条件编译来判断所处环境
C语言条件编译命令
C语言中条件编译 如:
#define、#undef : 定义宏、取消宏
#ifdef、#ifndef、#if、#elif、#else、#endif、defined
#if 可以用来判断条件
#defined 与#if、 #elif联合判断 == #ifdef
判断所处环境:
- 操作系统判定:
#if defined WIN32 || defined _WIN32 // WINDOWS OS
#elif linux // LINUX OS
#elif __sun // SOLARIS OS
#else
#endif
WIN32/_WIN32 可以用来判断是否 Windows 系统(对于跨平台程序)
_WIN64 用来判断编译环境是 x86(32位) 还是 x64(64位)
在 Win32 配置下,_WIN32 有定义,_WIN64 没有定义。
在 x64 配置下,_WIN32 和_WIN64 都有定义。
2. 编译器判定:
#ifdef __GNUC__ // GCC/G++
#elif _MSC_VER // vc
#else
#endif
#include<iostream>
using namespace std;
#if(true)
#ifdef linux
int main(){
#ifdef _MSC_VER
std::cout << 1 << " _MSC_VER"<<std::endl;
#elif __GNUC__
cout << 1<< " __GNUC__" << endl;
#else
cout << 1 <<" other" << endl;
#endif
return 0;
}
#elif defined WIN32 || defined _WIN32
int main(){
std::cout << 2 << std::endl;
return 0;
}
#endif
#else
int main(){cout << 3 << endl;}
#endif