C++的编译环境千奇百怪,很多时候一些代码在某些编译环境下可用,一旦移到其他环境下,就会干脆Compile Error
对此,我们可以使用C++的宏定义来判断操作系统,从而进行一些有趣的操作(貌似意义不大)
比如这样
* #include<iostream>
* #if !defined(_WIN32)//如果我使用的不是WIN32操作系统
* #include<bits/stdc++.h>//那我就打开万能头文件
* #endif //if要和endif搭配使用
* using namespace std;
* int main()
* {
* cout << "hello world" << endl;
* return ;
* }
对于上面这段代码,vs不允许使用万能头,所以就让他自己去判断一下编译环境是不是Windows,如果不是Windows,而是OJ什么的,那就打开万能头文件
也就是说
我们可以通过 #if defined(XXXX)或者#ifdef XXXX这样的语句来判断当前的操作系统,根据操作系统的不同进行不同操作
而且有趣的是,只要#if与#endif之间的操作在当前编译器下不被执行,不管写什么乱七八糟的东西都不会Compile Error
借助这个操作,我们甚至可以写两个main()函数
* #include<iostream>
* using namespace std;
* #if defined(_WIN32)
* int main()
* {
* cout << "hello world" << endl;
* return ;
* }
* #else
* int main()
* {
* cout << "HELLO WORLD" << endl;
* return ;
* }
* #endif
这样的源代码在不同的环境下编译就是完全不同的效果
系统宏定义:
* UNIX _unix
or _unix_
* Linux _linux
or _linux_
* Windows32 _WIN32
* Windows64 _WIN64
* IOS __APPLE__
* android __ANDROID__
编译器宏定义
*
GCC __GNUC__
*
Visual C++ _MSC_VER
*
Borland C++ __BORLANDC__