Использование макросов для именования функций в C - PullRequest
0 голосов
/ 24 апреля 2018

На днях я пытался использовать макрос для определения такой функции (упрощенно, очевидно):

#define DEF_ADD(name) \
    int add_name(int x, int y) { \
        return x + y; \
    } \

Теперь я ожидал, что фрагмент DEF_ADD(hello) определит функцию add_hello. Однако вместо этого вызов макроса определяет функцию с именем add_name. Я ожидаю, что это как-то связано со сканированием, но я не смог найти способ воссоздать искомое поведение. Есть идеи как это сделать?

1 Ответ

0 голосов
/ 24 апреля 2018

Вам нужно

#define DEF_ADD(name) \
    int add_##name(int x, int y) { \
    return x + y; \
}

Обратите внимание на ##.Я также бросил последний символ новой строки.В противном случае параметр name не используется, и вы создаете add_name в качестве имени функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...