【发布时间】:2012-03-12 15:01:15
【问题描述】:
我正在有条件地编译:
#ifdef WIN32
myVal = "Windows";
#elif __APPLE__
myVal = "Apple";
#endif
我可以在 __APPLE__ 块中测试一个值来测试不同版本(10.4、10.5、10.6 等)吗?
【问题讨论】:
标签: c++ macos compilation cross-platform
我正在有条件地编译:
#ifdef WIN32
myVal = "Windows";
#elif __APPLE__
myVal = "Apple";
#endif
我可以在 __APPLE__ 块中测试一个值来测试不同版本(10.4、10.5、10.6 等)吗?
【问题讨论】:
标签: c++ macos compilation cross-platform
如果您要检查编译器的环境,请尝试uname -v。
具体来说,我认为您可以通过uname -v | sed 's/Darwin Kernel Version \([^ ]*\):.*/\1/' 获取,例如“10.5”。
【讨论】:
您应该使用/usr/include/AvailabilityMacros.h 宏。请参阅TN2064 进行讨论,以及此文件中的标头 cmets。
【讨论】:
#ifdef 完全不在讨论范围内。所以,请澄清您的问题:您要检查编译器的环境还是程序的环境?