/H(외부 이름 길이 제한)
사용되지 않음. 외부 이름의 길이를 제한합니다.
구문
/H번호
인수
number
프로그램에서 허용되는 외부 이름의 최대 길이를 지정합니다.
설명
기본적으로 외부(공용) 이름의 길이는 2,047자입니다. 이는 C 및 C++ 프로그램에 해당합니다. /H를 사용하면 식별자의 허용 가능한 최대 길이만 줄일 수 있으며 늘릴 수는 없습니다. /H와 숫자 사이의 공백은 선택 사항입니다.
프로그램에 숫자보다 긴 외부 이름이 포함된 경우 추가 문자는 무시됩니다. /H 없이 프로그램을 컴파일하고 식별자에 2,047자를 초과하는 경우 컴파일러는 심각한 오류 C1064를 생성합니다.
길이 제한에는 컴파일러에서 만든 선행 밑줄(_) 또는 기호(@)가 포함됩니다. 이러한 문자는 식별자의 일부이며 중요한 위치를 차지합니다.
컴파일러는 (기본값) 및 호출 규칙에 의해 수정된 이름에 선행 밑줄(_)을
__stdcall
추가하고 호출 규칙에 의해__cdecl
__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 옵션은 Visual Studio 2005 이후 더 이상 사용되지 않습니다. 최대 길이 제한이 증가했으며 /H는 더 이상 필요하지 않습니다. 사용되지 않는 컴파일러 옵션 목록은 범주별로 나열된 컴파일러 옵션에서 사용되지 않는 컴파일러 옵션 및 제거된 컴파일러 옵션을 참조하세요.
Visual Studio 개발 환경에서 이 컴파일러 옵션을 설정하려면
프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 Visual Studio에서 C++ 컴파일러 및 빌드 속성 설정을 참조하세요.
구성 속성>C/C++>명령줄 속성 페이지를 선택합니다.
추가 옵션 상자에 컴파일러 옵션을 입력합니다.
프로그래밍 방식으로 이 컴파일러 옵션을 설정하려면
- AdditionalOptions을(를) 참조하세요.