我正在编译一个使用 C++ 关键字“覆盖”的 C++ 程序。
我在 Visual Studio 2010 中编译成功,但现在需要在 g++ 上编译。只有 g++ 4.6 可用(并且您需要 g++ 4.7 来支持“覆盖”)。
真正的解决方案是安装 g++ 4.7(现在正在发生),但这让我开始思考。是否有编译时检查以查看是否支持关键字?
我试过:
#ifndef override
#define override
#ifdef BUILD_WINDOWS
#pragma message("The \"override\" keyword is not supported on this compiler! Ignoring it!")
#else
#warning "The \"override\" keyword is not supported on this compiler! Ignoring it!"
#endif
#endif
这不起作用,因为“覆盖”不是符号。
我想要更通用的东西,而不是简单地检查编译器版本以查看它是否是支持关键字的版本之一。如果有的话,如何做到这一点?