Я только наткнулся на этот термин в этом вопросе post,Как узнать, применяется ли c89 или c99 cl.exe?
Как проверить, какое правило действительно используется моим компилятором?
Или можно указать правило для cl.exe
?
Я только наткнулся на этот термин в этом вопросе post,Как узнать, применяется ли c89 или c99 cl.exe?
Как проверить, какое правило действительно используется моим компилятором?
Или можно указать правило для cl.exe
?
Компиляторы C99 должны определить символ препроцессора __STDC_VERSION__
со значением 199901L, который C90 не должен делать этого (ничто не мешает им это делать и по-прежнему совместимо с C90, но я сомневаюсь, что они это делают). Очевидно, что для несовместимых компиляторов или компиляторов в несовместимом режиме ничего не обязательно. И все еще есть вопрос об ошибках и переходе (последний раз, когда я проверил, например, g ++ еще не определил эквивалентный макрос в значении, заданном для C++ 98, в то время как большинство людей, которых я знаю, было бы более полезным для них сделайте это, а не ожидайте выполнения export
).
'__STDC_VERSION__' (два символа подчеркивания) –
@Joe, исправлено, спасибо. – AProgrammer
cl.exe, компилятор Microsoft? Он не поддерживает C99, в основном.
Прочтите руководство? :-) –
На самом деле почти на каждый вопрос может ответить «Прочтите руководство», почему мы все еще придерживаемся SO вместо «Прочитайте руководство»? – user198729
Microsoft * still * не поддерживает C99, даже в Visual Studio 2010, поэтому вы можете смело предположить C89. –