Цель C - Как написать макрос - PullRequest
3 голосов
/ 19 апреля 2011

Мне нужно написать многострочный макрос.Мне это нужно, потому что у меня должен быть частичный код, который был «вставлен» в определенные точки в моем коде.Как я могу это сделать?

Ответы [ 3 ]

10 голосов
/ 19 апреля 2011

Из вашего вопроса не совсем понятно, чего вы на самом деле хотите, но простой многострочный макрос определяется следующим образом:

#define FOO something; \
            something_else;

Конечно, остерегайтесь проблемы if .. else.Если это применимо к вашему случаю, вы можете обернуть вещи в конструкцию do { ... } while(0).Это гарантирует, что оно рассматривается как одно утверждение.

#define FOO do                 \
            {                  \
               something;      \
               something_else; \
            } while (0)
2 голосов
/ 19 апреля 2011

Используйте символ обратной косой черты, как в C.

#define NINE (3 \
  + 3)
0 голосов
/ 19 апреля 2011
...