Поделиться через


/Zc:__STDC__ (Включить __STDC__ макрос)

Параметр /Zc:__STDC__ компилятора определяет встроенный __STDC__ макрос препроцессора как 1 в коде C.

Синтаксис

/Zc:__STDC__

Замечания

Параметр /Zc:__STDC__ компилятора реализует поведение, соответствующее стандарту C для __STDC__ макроса препроцессора, задав его значение 1 при компиляции кода C11 и C17.

Этот /Zc:__STDC__ параметр доступен в Visual Studio 2022 версии 17.2. Этот параметр отключен по умолчанию, но может быть включен явным образом при /std:c11 указании или /std:c17 указании. Нет отрицательной версии параметра.

Этот параметр является критическим изменением источника. Из-за поведения UCRT без предоставления функций POSIX, когда __STDC__ равно 1, невозможно определить этот макрос для C по умолчанию без внесения критических изменений в стабильные языковые версии.

Пример

// test__STDC__.c
#include <io.h>
#include <fcntl.h>
#include <stdio.h>

int main() {
#if __STDC__
    int f = _open("file.txt", _O_RDONLY);
    _close(f);
#else
    int f = open("file.txt", O_RDONLY);
    close(f);
#endif
}

/* Command line behavior

C:\Temp>cl /EHsc /W4 /Zc:__STDC__ test__STDC__.c && test__STDC__

*/

Установка параметра компилятора в Visual Studio

  1. Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.

  2. Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.

  3. В дополнительных параметрах добавьте /Zc:__STDC__. Нажмите кнопку "ОК" или "Применить", чтобы сохранить изменения.

См. также

/Zc (Соответствие)
/std (определение стандартной версии языка)