共用方式為


/H (限制外部名稱的長度)

已取代。 限制外部名稱的長度。

語法

/H數位

引數

number
指定程式中允許的外部名稱長度上限。

備註

根據預設,外部 (public) 名稱的長度為 2,047 個字元。 C 和 C++ 程式也是如此。 使用 /H 只能減少標識符的最大允許長度,而不會增加它。 /H數字之間的空格是選擇性的。

如果程式包含超過數位的外部名稱,則會忽略額外的字元。 如果您編譯不含 /H 的程式,而且標識碼包含超過 2,047 個字元,則編譯程式會產生 嚴重錯誤 C1064

長度限制包括任何編譯程式建立的前置底線 (_) 或符號 (@)。 這些字元是標識碼的一部分,並取得重要位置。

  • 編譯程式會將前置底線 (_) 新增至由 (default) 和__stdcall呼叫慣例修改__cdecl的名稱,並將前置符號 (@) 新增至呼叫慣例所__fastcall修改的名稱。

  • 編譯程式會將自變數大小資訊附加至 和 __stdcall 呼叫慣例所__fastcall修改的名稱,並將類型資訊新增至C++名稱。

您可能會發現 /H 很有用:

  • 當您建立混合語言或可攜式程式時。

  • 當您使用限制外部識別碼長度的工具時。

  • 當您想要限制符號在偵錯組建中使用的空間量時。

下列範例示範如果識別符長度限制太多,使用 /H 實際上可能會造成錯誤:

// compiler_option_H.cpp
// compile with: /H5
// processor: x86
// LNK2005 expected
void func1(void);
void func2(void);

int main() { func1(); }

void func1(void) {}
void func2(void) {}

使用 /H 選項時,您也必須小心,因為預先定義的編譯程式標識碼。 如果標識符長度上限太小,則某些預先定義的標識碼將會無法解析,以及特定連結庫函數調用。 例如,如果使用 函printf式,並在編譯時期指定 /H5 選項,則會建立符號_prin以參考 printf,而且在連結庫中找不到此選項。

/H 的使用/GL 不兼容(整個程序優化)。

自 Visual Studio 2005 以來,/H 選項已被取代;已增加長度上限,且不再需要 /H。 如需已被取代的編譯程式選項清單,請參閱依類別列出的編譯程式選項中已被取代和移除的編譯程序選項

在 Visual Studio 開發環境中設定這個編譯器選項

  1. 開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性

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

  3. 在 [ 其他選項 ] 方塊中輸入編譯程序選項。

若要以程式方式設定這個編譯器選項

另請參閱

MSVC 編譯器選項
MSVC 編譯器命令列語法