2013-06-16 2 views
2

:이 C 구문의 용어는 무엇입니까? 'int myInt = ({int x = 42; x;});'? 난 그냥 아주 깔끔한 C의 트릭을 표시했습니다

int myInt = ({ int x=42; x; }); // sets myInt to 42 

이 매크로를 작성 매우 유용합니다. 하지만 정확히 여기서 무슨 일이 일어나고있는거야? 누군가이 선을 따로 따로 골라 내고 메커니즘을 격리 시키거나 식별 할 수 있습니까?

+5

GNU 확장 문에 대한 표현식입니다. ** 이식성이 없습니다. ** –

+0

왜 매크로에 유용합니까? – JeffRSon

+2

@JeffRSon : 매크로 확장으로 인해 루프 및 기타 제어문을 "표현식"에 넣을 수 있습니다. 이것은 네임 스페이스/범위 컨트롤이 제공하고 구현하는 기능없이 인라인 함수와 동일한 기능을 제공합니다. (엄지 손가락 규칙은 가능할 때마다 GnuC 명령문 표현식보다는 인라인 함수를 사용하는 것입니다.) – torek

답변

0

int myInt = 42;과 같습니다. 그냥 42로 초기화 된 x에서 오는 값으로 표현식을 사용하여 초기화합니다.