共用方式為


/Zc:__STDC__ (啟用 __STDC__ 巨集)

編譯程式選項會將 /Zc:__STDC____STDC__ 建預處理器巨集定義為 C 程式代碼中的 1。

語法

/Zc:__STDC__

備註

編譯 /Zc:__STDC__ 程式選項會實作預處理器巨集的標準 __STDC__ C 一致性行為,在編譯 C11 和 C17 程式代碼時將其設定為 1。

此選項 /Zc:__STDC__ 是 Visual Studio 2022 17.2 版的新功能。 此選項預設為關閉,但在指定 或 /std:c17/std:c11可以明確啟用。 沒有選項的負版本。

此選項是來源中斷性變更。 由於 UCRT 的行為,當 __STDC__1 時不會公開 POSIX 函式,因此根據預設,如果未對穩定語言版本引進中斷性變更,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. 開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性

  2. 選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。

  3. 在 [其他選項] 中,新增 /Zc:__STDC__ 選擇 [確定] 或 [套用] 以儲存變更。

另請參閱

/Zc (一致性)
/std (指定語言標準版本)