2010-05-30 3 views
2

Я только наткнулся на этот термин в этом вопросе post,Как узнать, применяется ли c89 или c99 cl.exe?

Как проверить, какое правило действительно используется моим компилятором?

Или можно указать правило для cl.exe?

+4

Прочтите руководство? :-) –

+2

На самом деле почти на каждый вопрос может ответить «Прочтите руководство», почему мы все еще придерживаемся SO вместо «Прочитайте руководство»? – user198729

+1

Microsoft * still * не поддерживает C99, даже в Visual Studio 2010, поэтому вы можете смело предположить C89. –

ответ

5

Компиляторы C99 должны определить символ препроцессора __STDC_VERSION__ со значением 199901L, который C90 не должен делать этого (ничто не мешает им это делать и по-прежнему совместимо с C90, но я сомневаюсь, что они это делают). Очевидно, что для несовместимых компиляторов или компиляторов в несовместимом режиме ничего не обязательно. И все еще есть вопрос об ошибках и переходе (последний раз, когда я проверил, например, g ++ еще не определил эквивалентный макрос в значении, заданном для C++ 98, в то время как большинство людей, которых я знаю, было бы более полезным для них сделайте это, а не ожидайте выполнения export).

+0

'__STDC_VERSION__' (два символа подчеркивания) –

+0

@Joe, исправлено, спасибо. – AProgrammer

1

cl.exe, компилятор Microsoft? Он не поддерживает C99, в основном.