Законно ли определять переопределение в C ++ 03 - PullRequest
1 голос
/ 29 марта 2012

У нас есть проект, который использует множество средств C ++ 11, и мы подумали об этом приеме, чтобы он компилировался на C ++ 03.

#ifndef USE_CPP0X
#    define override
#endif

Насколько я знаю, запрещено определятьКлючевые слова C ++, так это законно?

Ответы [ 2 ]

6 голосов
/ 29 марта 2012

Это несколько осуждается, но, безусловно, возможно. Лучше и не нахмуренный вариант - определять макросы большими буквами, например,

#ifndef USE_CPP0x
#  define OVERRIDE
#else
#  define OVERRIDE override
#endif

Тогда не забудьте использовать OVERRIDE вместо override там, где хотели.

2 голосов
/ 01 августа 2017

Еще более явным с точки зрения использования «переопределения» для C ++ 11 и выше будет:

#if __cplusplus >= 201103L
#define OVERRIDE override
#else
#define OVERRIDE
#endif

Значение 201103L является стандартом, согласованным для C ++ 11. Макрос __cplusplus обязательно будет определен, если вы не используете древний компилятор.

...