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
'programing' 카테고리의 다른 글
Android 룸 지속: AppDatabase_Impl이 없습니다. (0) | 2022.08.10 |
---|---|
Vue 라우터 인아웃페이지 이행: 오래된 루트가 표시된 상태에서 새로운 루트로 이행한다. (0) | 2022.08.10 |
v-model이 작동하지 않는 이유는 무엇입니까? (0) | 2022.08.03 |
vue js에서 소품으로 수업을 통과합니까? (0) | 2022.08.03 |
16진수 형식의 부호 없는 긴 활자 인쇄 (0) | 2022.08.03 |