함수 이름 주위에 괄호를두면 같은 이름의 함수와 같은 매크로에 의해 '재정의'되지 않습니다.
예를 들어 함수가 매크로로 구현되는 경우도 있지만 실제 함수로 구현해야 할 수도 있습니다 (포인터를 얻을 수있는 한 가지 이유가 있음). 이 API의 구현자는 함수 이름 선언과 실제 함수 구현을 이름이 괄호로 묶여서 매크로 이름과 충돌하지 않도록 할 수 있습니다.
그런 다음 API 사용자는 어떤 이유로 매크로 대신 실제 함수를 사용하려는 경우 #undef _func
을 사용하거나 매크로를 사용하지 않으려면 괄호로 묶은 함수 이름을 사용할 수 있다고 결정할 수 있습니다.
"라이브러리 함수의 사용"C99 7.1.4 바와 같이 헤더에 선언 된 함수는 또한 헤더에 정의 함수와 같은 매크로로서 구현 될 수있다
라이브러리 그렇다면 함수가 헤더가 포함되어있을 때 명시 적으로 선언 된 이면 아래에 표시된 기술 중 하나를 사용하여 같은 매크로의 영향을받지 않도록 할 수 있습니다. 함수의 매크로 정의는 매크로 함수 이름의 확장을 나타내는 왼쪽 괄호 다음에 나오지 않으므로 괄호 안에 함수 이름을 포함하여 로컬에서 을 억제 할 수 있습니다. 동일한 구문 론적 이유 때문에 도 매크로로 정의되어 있어도 라이브러리 함수의 주소를 가져올 수 있습니다. #undef를 사용하여 매크로 정의를 제거하면 실제 함수가 참조됩니다.
본인은 영어가 모국어가 아니지만 올바른 단어를 배우는 것이 좋습니다. 다음 기호는'()'를 "괄호"라고 부릅니다. –
괄호와 관련된 정확한 단어를 알려 주신 Jonathon Reinhart에게 감사드립니다. – user2503838
둘 이상의() 및 "괄호"에 대해 "괄호" – 0decimal0