1
내 C 코드에 두 개의 매크로가있어 특정 변수의 이름을 구성하는 데 도움이됩니다. 예를 들어, 다음을 고려 : 그래서, B_A_object
라는 변수를 선언하기 위해 노력하고있어매크로의 결과를 다른 매크로에 전달하는 방법은 무엇입니까?
#define MACROA(name) A_##name
#define MACROB(name) B_##name
void *MACROB(MACROA(object));
. 그러나이 작동하지 않는 컴파일러 나에게 메시지를 던졌습니다 : 그래서
object.c:27:21: error: a parameter list without types is only allowed in a function definition
void *MACROB(MACROA(object));
^
object.c:26:26: note: expanded from macro 'MACROB'
#define MACROB(name) B_##name
^
를, 그것은 전처리 MACROA(object)
의 결과를 참가하지만 B_MACROA(object)
을 시도 있도록 그 자체를 표현을 고려 보인다 . 그렇다면 전 처리기가 다른 매크로에 전달 된 매크로의 결과를 고려하도록하려면 어떻게해야합니까?
:
당신은 이런 식으로 해결할 수 있습니다. – Xaqq
@Xaqq 아니요, 불행히도 저는 두 매크로가 부과하는 명명 규칙을 따라야합니다 ... – LuisABOL