[C/C++] C 중복 정의된 매크로의 값

pikamon·2022년 2월 11일
1

C/C++

목록 보기
1/9

같은 이름의 매크로를 중복으로 정의하면 error가 아닌 warning이 발생한다.

  1. 예제 코드 (a.c)
#include <stdio.h>

#define ABC 1 // duplicated!
#define ABC 2 // duplicated!

int main(void)
{
	printf("%d\n", ABC);
	return 0;
}
  1. 실행 결과
# gcc -o a a.c
a.c:4:0: warning: "ABC" redefined
 #define ABC 2

a.c:3:0: note: this is the location of the previous definition
 #define ABC 1

# ./a
2

이 경우 매크로의 값은 가장 아랫줄에 정의된 값으로 정해진다. (ABC = 2)

전처리기가 파일을 위에서부터 읽으면서 안 건너뛰고 성실히 수행하는 듯.

중복으로 3개, 7개씩 정의해봐도 가장 아래에 정의된 값으로 출력되었다.


참고

# gcc -v
gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
profile
개발자입니당 *^^* 깃허브 https://github.com/pikamonvvs

0개의 댓글