Как узнать, применяется ли c89 или c99 с помощью cl.exe? - PullRequest
2 голосов
/ 30 мая 2010

Я только что натолкнулся на этот термин в этой записи ,

как проверить, какое правило фактически используется моим компилятором?

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

Ответы [ 2 ]

5 голосов
/ 30 мая 2010

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

1 голос
/ 30 мая 2010

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

...