/H (ограничение длины внешних имен)
Ограничивает длину внешних имен.
/Hnumber
Аргументы
- number
Указывает максимальную длину внешних имен, допустимую в программе.
Заметки
По умолчанию длина для внешних имен ограничена до 2047 символов. Это применимо к программам C и C++. С помощью /H можно только уменьшить допустимую длину идентификаторов, но не увеличить ее. Пробел между /H и number является необязательным.
Если программа содержит внешние имена с длиной более number, лишние символы игнорируются. Если вы компилируете программу без /H и идентификатор содержит больше 2,047 символов, компилятор выдаст сообщение Неустранимая ошибка C1064.
Ограничение в отношении длины включает префикс (_) или символ @. Эти символы являются частью идентификатора и занимают значительное место.
Компилятор добавляет символ подчеркивания (_) к именам, измененным __cdecl (по умолчанию) и соглашениями о вызове __stdcall, а символ @ добавляется к именам, измененным соглашением о вызове __fastcall.
Компилятор добавляет сведения о размере аргумента к именам, измененным соглашениями о вызове __fastcall и __stdcall, а также добавляет сведения о типе к именам 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, для ссылки на printf будет создан символ _prin, но он не будет найден в библиотеке.
Использование /H несовместимо с /GL (оптимизация всей программы).
/H считается устаревшим и не используется; максимальные пределы длины увеличены и /H больше не требуется. Дополнительные сведения см. в разделе Нерекомендуемые параметры компилятора в Visual C++ 2005.
Установка параметра компилятора в среде разработки Visual Studio
Откройте диалоговое окно Страницы свойств проекта. Дополнительные сведения см. в разделе Открытие свойств страниц проекта.
Откройте папку C/C++.
Выберите страницу свойств Командная строка.
Введите параметры компилятора в поле Дополнительные параметры.
Установка данного параметра компилятора программным способом
- См. раздел AdditionalOptions.