다음을 통해 공유


매크로 (C/C++)

전처리 매크로 전처리기 지시문이 아닌 모든 줄에서 확장 됩니다 (하지 않은 줄을 # 첫 번째 공백이 아닌 문자로) 및 조건부 컴파일의 일부로 건너뛰지 않습니다 일부 지시문의. 이때 조건부 컴파일"지시문 상수 식을 테스트 하 여 컴파일하는 소스 파일의 일부를 표시 하지 않습니다 수 있습니다 또는 텍스트 블록을 결정 하는 식별자는 전달 컴파일러 및 텍스트 블록 전처리 하는 동안 소스 파일에서 제거 됩니다.

#define 지시문입니다 일반적으로 상수, 키워드 및 일반적으로 사용 되는 문 또는 식을 의미 있는 식별자를 연결에 사용 됩니다.이 상수를 나타내는 식별자 "상수 목록은." 또는 "기호화 된 상수" 라고도 문 또는 식을 나타내는 식별자 "매크로" 라고도 합니다. 이 전처리기 설명서에서 용어 "매크로"를 사용 합니다.

프로그램 소스 텍스트 또는 특정 전처리기 명령 인수에 매크로의 이름을 인식 되 면 해당 매크로에 대 한 호출으로 처리 됩니다.매크로 이름은 매크로 본문의 복사본으로 교체 됩니다.매크로 인수를 수락 하면 실제 인수를 매크로 이름 다음 매크로 본문에서 형식 매개 변수에 대 한 대체 됩니다.매크로 호출을 처리 본문 복사본으로 대체 하는 프로세스를 매크로 호출의 "확장" 라고 합니다.

실제로 두 종류의 매크로가 있습니다. 이때 확인 하 고 함수 호출 처럼 작동 합니다. 인수를 받아들일 수 "함수 같은" 매크로 정의할 수 있습니다 반면 개체 같은 "매크로 인수를 취하지 합니다.실제 함수 호출 매크로 생성 하지 않습니다 때문에 때로는 함수 호출 매크로로 대체 하 여 빠르게 실행 프로그램을 만들 수 있습니다.(C + +에서 인라인 함수는 기본 설정된 방법입니다.) 그러나 매크로 정의 하지 않고 신중 하 게 사용 하 여 문제를 만들 수 있습니다.괄호 안에 인수를 갖는 매크로 정의의 식에 적절 한 우선 순위를 유지 하기 위해 사용 할 수 있습니다.또한 매크로 파생 작업이 있는 식을 제대로 처리 될 수 있습니다.참조는 getrandom 예제에서 # define 지시문 에 대 한 자세한 내용은.

매크로 정의 하면 사용자가 다른 값으로 원래 정의 먼저 분리 하지 않고 재정의할 수 없습니다.그러나 매크로를 정확 하 게 동일한 정의 재정의할 수 있습니다.따라서 정의 동일한 프로그램에서 한 번 이상 나타날 수 있습니다.

#정의 되지 않음 지시문의 매크로 정의 제거 합니다.정의 제거한 후에 매크로에 다른 값을 재정의할 수 있습니다.# Define 지시문# undef 지시문 토론의 #define 및 #undef 지시문을 각각.

자세한 내용은 다음 항목을 참조하십시오.

참고 항목

기타 리소스

C/C++ 전처리기 참조