이 코드는 왜 함수 이름 양옆에 괄호를 붙여놨나요?


프로젝트 소스파일에서 이런 C함수를 찾았습니다

int (foo) (int *bar)
{
    return foo (bar);
}

처음엔 함수 포인턴줄 알았는데 그것도 아니더라구요 왜 괄호로 감싸준 걸까요?

  • 2016년 01월 29일에 작성됨

조회수 220


1 답변


좋아요
0
싫어요
채택취소하기

전처리를 하지 않았다면 int (foo) (int *bar)int foo(int *bar)와 동일합니다.

소스코드 전체가 있는 게 아니라서 확신할 순 없지만, 보통 함수랑 매크로가 같은 이름을 갖고 있을 때 매크로가 확장되는걸 방지하는 역할로 함수 이름에 괄호를 씌워줍니다

/* macro */
#define isdigit(c) ...

/* function */
int (isdigit)(int c) // 괄호를 써서 매크로랑 구별. 우선순위가 더 높아짐
{
  return isdigit(c); // 매크로 사용
}
  • 2016년 01월 29일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close