共用方式為


/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 不相容(神秘le 程式優化)。

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

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

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

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

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

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

另請參閱

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