하나의 인수로 선언을 사용하는 매크로를 작성하고 있습니다. 은 매크로을 매크로 내에서 유형 및 식별자 인수로 분리하지 않고 매크로에서 추론 할 수 있습니까?선언 유형을 유추
#define M(declaration) \
declaration; \
static_assert(sizeof(/* deduce type of 'declaration' */) == 4, "!")
M(int i);
M(double d{3.14});
M(std::string s{"Hello, world!"});
다음 구현 일하는 것이하지만 덜 사용자 친화적 (IMO) 느낌 :
#define M(type, identifier) \
type identifier; \
static_assert(sizeof(type) == 4, "!")
M(int, i);
M(double, d{3.14});
M(std::string, s{"Hello, world!"});
가능하다면, 나는 하나의 인수로 선언을하는 것을 선호합니다.
관련 질문 :Macro to get the type of an expression; 하지만 내 예제 (컴파일러 오류 : 예상 중첩 된 이름 지정자)에서 작동하도록 해당 코드를 가져 오지 못했습니다.
마지막에 식별자를 인쇄하려면 정적 어설트를 사용 하시겠습니까? 왜냐하면 그렇지 않다면 전 처리기를 버리는 해결책이 있기 때문입니다. – StoryTeller
@StoryTeller 제가 식별자를 반드시 필요로하지는 않습니다. 그러나 여러 가지 솔루션에 대해 생각해 볼 수 있다면 모든 것에 관심이있을 것입니다. –