다음을 통해 공유


/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 개발 환경에서 이 컴파일러 옵션을 설정하려면

  1. 프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 Visual Studio에서 C++ 컴파일러 및 빌드 속성 설정을 참조하세요.

  2. 구성 속성>C/C++>명령줄 속성 페이지를 선택합니다.

  3. 추가 옵션 상자에 컴파일러 옵션을 입력합니다.

프로그래밍 방식으로 이 컴파일러 옵션을 설정하려면

참고 항목

MSVC 컴파일러 옵션
MSVC 컴파일러 명령줄 구문