QtCreator: Как мне зарегистрировать "override" и "final" в качестве ключевого слова? - PullRequest
5 голосов
/ 14 сентября 2011

C ++ 11 (или C ++ 0x) вводит ключевые слова override и final для C ++.Отличная штука, и мы собираемся использовать их, чтобы сделать наш код лучше.НО, хотя компилятор MS Visual-C ++ 2010 отлично обрабатывает ключевые слова, QtCreator (моя любимая среда разработки) полностью смущает их. переопределить методы помечены как ошибки, и, что намного хуже, все функции навигации по коду или поиск по символическому коду полностью испорчены.: (

Так много для моей проблемы. Мой вопрос, как указано выше: Как мне научить QtCreator распознавать override и final в качестве ключевых слов?

Спасибо! - Робин

PS: Я использую QtCreator 2.3, новейшую стабильную версию AFAIK. Компилятор MSVC2010.

Ответы [ 3 ]

2 голосов
/ 14 сентября 2011

Полагаю, вам нужно подождать, пока они не выпустят его для поддержки C ++ 11.Перекомпиляция не будет хорошим вариантом, так как вам нужно будет позаботиться обо всем (лексический, таблица символов), изменив грамматику языка, введя два новых ключевых слова.

1 голос
/ 14 сентября 2011
#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

Это заставит его полностью игнорировать эти два слова

0 голосов
/ 08 сентября 2012

Вы можете сделать это:

#if __cplusplus < 201103L
    #define override
#endif

Затем необходимо убедиться, что вы компилируете в режиме C ++ - 11 (в GCC это будет "-std = c ++ 11").Обычно хорошей идеей является наличие заголовка «config.h», который вы затем включаете везде именно для такого рода вещей.С некоторыми хорошо продуманными макросами вы можете быть уверены, что ваш код также собирается с более старыми компиляторами.Если вы абсолютно не полагаетесь на какую-то особенность, которую нельзя # убрать.

...