가 어떻게이 예제 코드가 작동 할 수 있습니까? (C 또는 C++에서)어떻게 매크로 함수의 산술 표현식을 평가하여 C 전처리 기에서 다른 매크로 함수로 전달할 수 있습니까?
COUT은 본보기 내가 DEC_AND_PRINT(3)
를 호출 할 때, 나는이 기대 올바른 감소 수
#define PRINT_1 std::cout<<"One : " <<1;
#define PRINT_2 std::cout<<"Two : " <<2;
#define DEC_AND_PRINT(number) PRINT_##number-1
을 평가하려는 단지입니다 :
DEC_AND_PRINT(3) PRINT_##(3-1) -> PRINT_2 -> std::cout<<"Two : "<<2
그러나 컴파일러주고 나에게 오류 :
GCC : error: 'PRINT_3' was not declared in this scope...
GCC : note: in expansion of macro 'DEC_AND_PRINT' DEC_AND_PRINT(3)
어떻게 인수를 감소시킬 수 있습니까?
기본적으로 매크로 함수가 숫자를 가져 와서 _name_of_macro_decremented_number 구문에서 다른 매크로 함수를 호출하려고합니다.
PRINT_1 std :: cout << "One :"<< 1; "은 C에서 작동하지 않습니다. C 태그 삭제. – chux
수 없습니다. 전 처리기는 이와 같이 사용할 수 없습니다. – EJP
감사합니다 ..하지만 매크로에 어떤 식 으로든 arithimetic 표현을 평가하고 결과를 사용하여 매크로 이름 __ ## calculated value를 호출합니까? –