QtCreator:如何将"override"和"final"注册为关键字?

QtCreator: How do I register "override" and "final" as a keyword?

本文关键字:final 注册 关键字 override QtCreator      更新时间:2023-10-16

c++ 11(或c++ 0x)向c++引入了overridefinal关键字。很棒的东西,我们会用它们来改进我们的代码。但是,虽然MS visual - c++ 2010编译器可以完美地处理关键字,但QtCreator(我选择的IDE)完全被它们弄糊涂了。override方法被标记为错误,更糟糕的是,所有代码导航功能或符号代码搜索都完全搞糟了。(

我的问题到此为止。我的问题如上所述:我如何教QtCreator识别overridefinal作为关键字?

谢谢!——罗宾

PS:我使用QtCreator 2.3,最新的稳定版本。编译器为MSVC2010

我猜你需要等到他们发布它来支持c++ 11。重新编译它并不是一个好的选择,因为您需要通过引入两个新关键字来改变语言的语法,从而处理所有的事情(词法、符号表)。

#ifdef __GNUC__
 #if __GNUC__*100 + __GNUC_MINOR__ < 40700
  #define override
  #define final
 #endif //GCC version
#else //defined GNUC
 #ifdef _MSC_VER
  #if _MSC_VER < 1600
   #define override
   #define final
  #else //MS version
   #error "UNKNOWN COMPILER"
  #endif //MS version
 #endif //MS defined
#endif //defined GNUC

这将导致它完全忽略这两个单词

你可以这样做:

#if __cplusplus < 201103L
    #define override
#endif

你必须确保你在c++ -11模式下编译(在GCC中应该是"-std=c++11")。这通常是一个好主意,有一个"config.h"头,然后你包括在所有地方的这类东西。使用一些精心设计的宏,您可以确保您的代码也可以使用较旧的编译器构建。除非你完全依赖于一个不能被#if'去掉的特定功能