programing

What is this (( ))?

copyandpastes 2022. 8. 3. 23:56
반응형

What is this (( ))?

While browsing through the gcc compiler source code (gcc/c-family/c-pragma.c) I see:

typedef struct GTY(()) align_stack {
  int                  alignment;
  tree                 id;
  struct align_stack * prev;
} align_stack;

C프로그래밍을 몇 년이나 했든 상관없이 다음 비트는(())저는 아직 전혀 모릅니다.이게 무슨 뜻인지 설명 좀 해주시겠어요?구글은 그것을 찾지 못한 것 같다.

They are GCC internal "magic", i.e. part of the compiler implementation itself.

See this page which talks about their use. The macro is used to mark types for garbage-collection purposes. There can be arguments too, see this page for details.

업데이트: Drew Dorman이 코멘트에서 지적한 바와 같이 실제 이중 괄호는 GNU 구현의 "내부성"의 일부가 아닙니다.인수의 전체 목록을 호출된 매크로의 단일 인수로 수집하고자 할 때 일반적으로 사용됩니다.이것은 포장할 때 도움이 될 수 있습니다. printf()이 기술에 대한 자세한 내용은 이 질문을 참조하십시오.

일반적으로 콤마를 보호하기 위해 매크로와 함께 사용됩니다.정해진#define foo(a,b), 매크로 기동foo(1,2,3)불법이 될 수도 있어요추가 괄호 쌍을 사용하면 어떤 쉼표가 차폐되는지 명확히 알 수 있습니다.foo((1,2),3)foo(1,(2,3)).

이 경우,GTY는 콤마로 구분된 여러 인수를 사용할 수 있지만 이러한 콤마는 모두 차폐해야 합니다.그래서 내면이()모든 인수를 둘러싸다

ReferenceURL : https://stackoverflow.com/questions/14891052/what-is-this

반응형