종종 매크로에서 사람들은 세미콜론을 삼키기 위해 do { ... } while(0)
을 사용하는 경우가 있습니다. 나는 단지 그들이 대신 ({ ... })
를 사용하는 예를 건너 왔어요,뿐만 아니라 세미콜론을 삼키는 것,하지만 당신은뿐만 아니라 값을 반환 할 수 있도록 보인다세미콜론을 삼키기 위해 ({...}) 매크로를 사용하십시오.
#define NEW_MACRO() ({ int x = 1; int y = 2; x+y; })
if(1)
val = NEW_MACRO();
else
printf("this never prints");`
발은 내가 할 수있는 3 인 나올 것 그것에 관한 문서를 찾지 못해서 조금주의를 기울였습니다. 이 방법으로 어려움이 있습니까?
는
GNU 확장 프로그램입니다. –
내가 기억하는 한, 표준이 아닙니다 (gcc 호환 가능). – cobbal
이 코드는 C가 아니며 "GNU C"입니다. –