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__

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信