Недопустимое предупреждающее сообщение токена препроцессора - PullRequest
1 голос
/ 03 марта 2010

У меня есть набор сгенерированных функций из инструмента поставщика, которые должны быть определены мной. Поскольку внутренняя функциональность каждой из этих функций абсолютно одинакова, я решил, что мог бы использовать макрос, чтобы облегчить мне жизнь.

Вот предупреждение обидно:

pasting "<function_name>" and "(" does not give a valid preprocessing token

Теперь я определяю свой макрос следующим образом:

#define HANDLE_FUNCTION(x)               \
  void <function_prefix>_ ## x ## (void) \
  {                                      \
    x ## _Flag = TRUE;                   \
  }

В моем коде я пишу:

HANDLE_FUNCTION(fn1)
HANDLE_FUNCTION(fn2)

... и т. Д.

Есть мысли о том, почему это происходит?

1 Ответ

5 голосов
/ 03 марта 2010

Удалите второе ##, оно бесполезно (вы не хотите сделать один символ function_name().

...