임의의 구조체가있는 경우 매크로를 사용하여 해당 구조체에 필드를 추가 할 수있는 방법이 있습니까?
예를 들면 :
struct foo{
int a,
int b
};
MAGIC(foo, newtype, newname);
다음과 같이 평가됩니다.
struct foo{
int a;
int b;
};
struct magic_foo{
int a;
int b;
newtype newname;
};
이것이 스트레칭이라는 것을 알고 있지만 이름에서 구조체의 정의를 검색하는 내장 매크로가있을 수 있다고 생각합니까?
전처리 기가 C 구문을 완전히 인식하지 못하기 때문에 직접적으로는 아닙니다 (토큰 대체 자로 만 작동하며 이전에 선언 된 유형에 대한 검사는 불가능합니다).
아마도 이것은 갈 방법입니다.
#define STRUCT { \
int a; \
int b; \
EXTRA_MEMBER_DECL \
}
#define EXTRA_MEMBER_DECL /* empty */
struct foo STRUCT;
#define EXTRA_MEMBER_DECL newtype newname;
struct bar STRUCT;
플랜 B는 중첩 된 구조체를 사용할 수 있습니다.
struct bar {
struct foo;
newtype newmember;
};
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다