Мой компилятор расширяет его до 199711L. Что это значит? Я читал, что __cplusplus> 199711L означает C++ 11. Каковы возможные расширения этого макроса и что это означает?Какова директива __cplusplus, определенная в разных компиляторах?
ответ
199711L выступает за год = 1997, Месяц = 11 (т.е., ноябрь 1997 года) - дата, когда комитет одобрил стандарт, остальная часть ISO утверждена в начале 1998 года
Для 2003 Стандарт, было достаточно мало изменений, которые комитет (по-видимому) решил оставить эту ценность без изменений.
Для стандарта 2011 года, он должен быть определен как 201103L, (опять же, год = 2011, месяц = 03) еще раз означает, что комитет одобрил стандарт, как завершена в марте 2011 года
Для 2014 стандарт должен быть определен как 201402L, интерпретируется так же, как указано выше (февраль 2014 г.).
Для стандарта 2017 года его необходимо определить как 201703L (март 2017 года).
До того, как был утвержден первоначальный стандарт, довольно много компиляторов обычно определяли его на 0
(или просто пустое определение, например #define __cplusplus
), чтобы обозначить «несоответствие». Когда его попросили строго соблюдать их, многие определили его на 1
.
Я почти забыл упомянуть, но еще один лакомый кусочек о древних компиляторах: несколько самых ранних версий cfront (и, вероятно, некоторые другие, копирующие его) определили c_plusplus
вместо __cplusplus
. Я не помню, что это определяется каким-либо значимым значением.
Это означает, что он совместим со стандартом 1997 C++ (на самом деле известный как C++ '98, поскольку они слишком долго ратифицировать его ..
- 1. Директива компилятора __cplusplus определена и не определена
- 2. Размеры указателей в разных компиляторах
- 3. Выходное поведение в разных компиляторах
- 4. Динамически определенная директива не компилируется
- 5. Стандартные реализации библиотеки C++ в разных компиляторах
- 6. атрибуты функции pure/const в разных компиляторах
- 7. Чтение файлов в разных компиляторах C++
- 8. Получение разных ouputs на компиляторах Diffrent
- 9. Какова временная шкала реализации GC в основных компиляторах C++?
- 10. Netbeans «__cplusplus» Defined Wrong
- 11. использование __cplusplus в источнике питона
- 12. Какова будет область MACRO, определенная внутри структуры?
- 13. Выполняет ли код C++ в разных компиляторах разные результаты
- 14. же указатель, показывающий различные размеры в разных компиляторах
- 15. Пользовательское исключение, отображающее переменное сообщение, различное поведение в разных компиляторах
- 16. C++ Code отображает разные, что неожиданно, выводится в разных компиляторах
- 17. Обнаружение ошибок в компиляторах
- 18. Грамматики в компиляторах
- 19. Инверсия управления в компиляторах
- 20. Семантический анализ в компиляторах
- 21. Регистрация распределения в компиляторах
- 22. Код, производящий разные выходные данные на разных компиляторах
- 23. Backtracking в компиляторах scala parser?
- 24. Ограждение в старых компиляторах C++
- 25. Как классы, реализованные в компиляторах
- 26. Различия в компиляторах. C-язык
- 27. Различия в компиляторах со ссылками
- 28. timespec на компиляторах окон
- 29. Различия в компиляторах ARM Cortex-M
- 30. Какова директива компилятора @encode, реализованная в Objective-C?
2003 был «технический пересмотр», на самом деле не стандарт. Он только что представил материал «TR3», который никогда не был частью стандарта. –
@MichaelJ: [«ISO/IEC JTC1/SC22/WG21 подготовил стандарт ISO/IEC 14882: 2003 на языке программирования C++. Он был опубликован в 2003-10- 16. «] (http://www.open-std.org/jtc1/sc22/WG21/docs/standards). Обратите внимание, что это результат TC (Техническое исправление), а не TR (технический отчет). TR - отдельный документ, а не пересмотр стандарта. –
Я не сказал, что это TR, я сказал, что он представил материал TR3, который он сделал. Документ, опубликованный в 2003 году, andard plus CA. Это был не новый стандарт C++, и стандарт 1998 года никоим образом не был изменен. –