Применение стандарта ANSI C в Visual Studio 2015
Я пытаюсь заставить Visual Studio применять стандарт ANSI C при компиляции проекта, но не могу заставить его работать. Какие-нибудь советы? Я прочитал все учебные пособия, включил параметр /Za и назвал свой файл как.c (не.cpp). Тем не менее, следующая программа все еще успешно собирается:
#include <stdio.h>
void main(void)
{
for (int i = 0; i < 10; i++)
{
}
int f = 0;
}
Но это не должно. Это должно быть так, чтобы уважать стандарт ANSI C:
#include <stdio.h>
void main(void)
{
int i;
int f = 0;
for (i = 0; i < 10; i++)
{
}
}
Я хотел бы, чтобы эквивалентные параметры GCC "-ansi" и "-Wpedantic". Это вообще возможно в VS?
1 ответ
На этой странице MSVC 2015 поддерживает только C99:
Соответствие C99 Visual Studio 2015 полностью реализует стандартную библиотеку C99, за исключением любых функций библиотеки, которые зависят от функций компилятора, еще не поддерживаемых компилятором Visual C++ (например,
не реализован).
На этой странице нет упоминаний о совместимости с C89.
/Za
Переключатель отключает только определенные расширения Microsoft:
Компилятор Visual C++ предлагает ряд функций, помимо тех, которые указаны в стандартах ANSI C89, ISO C99 или ISO C++. Эти функции известны как расширения Microsoft для C и C++. Эти расширения доступны по умолчанию и недоступны, если указан параметр /Za. Дополнительные сведения о конкретных расширениях см. В разделе Расширения Microsoft для C и C++.
Он не отключит расширения, не относящиеся к Microsoft, если они являются частью официального стандарта C, который он поддерживает (например, C99).