Я пытаюсь сделать Макроподстановки, но он не работает, вот код:C препроцессор макроподстановка
#define COMLOG 2
#define __COM_ESPECIAL_print(__a, __comNumber) COM##__comNumber##_print(__a)
#define COM_LOG_print(__a) __COM_ESPECIAL_print(__a, COMLOG)
, но когда я пытаюсь позвонить с:
COM_LOG_print("pepe");
Это делает нон ожидаемую замену:
неопределенную ссылку на COMCOMLOG_print
То, что я надеюсь получить:
COM2_print
Любые идеи?
Unrelated к вашей проблеме, но не имеют имена с двойным подчеркиванием ведущего, [они защищены во всех областях] (http://stackoverflow.com/a/228797/440558). –
Взгляните на http://stackoverflow.com/questions/1489932/how-to-concatenate-twice-with-the-c-preprocessor-and-expand-a-macro-as-in-arg, а также http : //stackoverflow.com/questions/2202147/is-there-a-way-to-control-macro-expansion-order, а также http://stackoverflow.com/questions/8587965/c-pre-processor-macro -expansion –
@JoachimPileborg Сначала я положил только на подчеркивание, но тестировал его. Я перехожу только на два, чтобы проверить ... Я забыл вернуть его только одному – togarha