几个比较有用有趣的predefine预定义的宏,用于跨平台,记录一下,学习
#include <unistd.h> #if defined __GNUC__ #define a "__GNUC__ defined" #else #define a "__GNUC__ not defined" #endif #if defined _MSC_VER #define b "_MSC_VER defined" #else #define b "_MSC_VER not defined" #endif #ifdef _POSIX_SEMAPHORES #define c "_POSIX_SEMAPHORES defined" #else #define c "_POSIX_SEMAPHORES not defined" #endif #include <iostream> using namespace std; int main() { cout<<a<<endl; cout<<b<<endl; cout<<c<<endl; }
只在linux下跑了一下,结果为:
__GNUC__ defined
_MSC_VER not defined
__POSIX__SEMAPHORES defined