Raj*_*jiv 5 c++ windows header windows-7 preprocessor-directive
是否存在任何C++编译时宏来检测正在编译代码的Windows操作系统.我基本上只想在Win7上支持某些功能.所以我有兴趣做这样的事情
#if <os_macro> = WIN7
// This function would do something valid only on Win7 builds.
bool myfunction {
// do something here
}
#else
// This function would typically return false, since its not supported on OS below win7
bool myfunction {
return false;
}
#endif
Run Code Online (Sandbox Code Playgroud)
还有其他更好的方法吗?
Ada*_*eld 11
它正在编译的操作系统并不是那么重要; 更重要的是代码运行的操作系统,在编译时显然无法检测到.但是,如果您希望您的代码在旧版本的Windows上运行,您可以设置WINVER和_WIN32_WINNT某些值,这将导致更新的功能无法使用等.(只需在Windows头文件中搜索这些宏进行测试的地方以获得一个想法).
要在运行时测试功能,请使用GetProcAddress(也可能LoadLibrary,如果它在较新的DLL中)来测试该功能是否可用.如果是,请拨打电话,如果没有,请不要.
如果要检测编译器版本等,请参阅Visual Studio编译器使用的预定义宏.