가끔, C 매크로는 다음과 같이 무언가로 작성된 것으로 나타났습니다 :C에서`({});`에 대한 추가 정보?
({});
컴파일하지만, 아무것도하지 않고 :
몇 가지 실험 후, 나는 것으로 나타났습니다. (예상대로)#define foo(bar) ({ ++bar; })
;
을 끄면 구문 오류가 발생합니다. 이것의 부작용은 foo()가 코드에서 함수처럼 보이는지 확인하는 것입니다. (세미콜론을 끈 채로두면 오류는 문제를 진단하는 데별로 유용하지 않습니다.)return ({});
은 void 함수를 사용하려고 할 때와 마찬가지로 무시되지 않는 void 값에 대해 불평합니다.
개발자가 매크로에 세미콜론을 추가하는 것입니까, 아니면 다른 용도입니까? 나는 Google을 사용해 봤지만 구두점으로는 비참하게 실패합니다. 이 이름이 있나요?
고대 - 그러나 구문은 4.4.2에서 여전히 지원됩니다. –