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