как я могу заставить этот пример кода работать? (На C или C ++)
Cout только для примера. Я хочу оценить правильное уменьшенное число
#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)
, я ожидаю этого:
DEC_AND_PRINT(3) PRINT_##(3-1) -> PRINT_2 -> std::cout<<"Two : "<<2
Но компилятор выдает ошибку:
GCC: ошибка: 'PRINT_3' не был объявлен в этой области ...
GCC: примечание: в раскрытии макроса 'DEC_AND_PRINT' DEC_AND_PRINT (3)
Как я могу уменьшить аргумент?
По сути, я пытаюсь заставить макрос-функцию получить номер и вызвать другую макрос-функцию с синтаксисом _name_of_macro_decremented_number.
PRINT_1 std::cout<<"One : " <<1;
не будет работать в C. Удаление тега C. - person chux - Reinstate Monica   schedule 04.10.2017std::cout <<
нотация по своей сути C ++ и только C ++. - person Jonathan Leffler   schedule 04.10.20173-1
до его окончательного значения2
. - person Cornstalks   schedule 04.10.2017EVAL(11+22*3)
расширялся до77
, ноEVAL(11+3*3)
расширялся до20
. Возможно, но необходимо, чтобыADD(11,MUL(22,3))
расширился до77
. Довольно просто заставить ваш макрос работать (нужноDEC_AND_PRINT(3)
оценитьPRINT_2
). Что вам нужно? - person H Walters   schedule 04.10.2017