이 코드는 왜 함수 이름 양옆에 괄호를 붙여놨나요?
조회수 2789회
프로젝트 소스파일에서 이런 C함수를 찾았습니다
int (foo) (int *bar)
{
return foo (bar);
}
처음엔 함수 포인턴줄 알았는데 그것도 아니더라구요 왜 괄호로 감싸준 걸까요?
1 답변
-
전처리를 하지 않았다면
int (foo) (int *bar)
는int foo(int *bar)
와 동일합니다.소스코드 전체가 있는 게 아니라서 확신할 순 없지만, 보통 함수랑 매크로가 같은 이름을 갖고 있을 때 매크로가 확장되는걸 방지하는 역할로 함수 이름에 괄호를 씌워줍니다
/* macro */ #define isdigit(c) ... /* function */ int (isdigit)(int c) // 괄호를 써서 매크로랑 구별. 우선순위가 더 높아짐 { return isdigit(c); // 매크로 사용 }
댓글 입력