Что означает пустой # в определении макроса? - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть следующий макрос:

#define F(Args, ...) \
   // macro definition
#
   F(()) // looks like usage?
#undef F

Что означает строка, содержащая только #?F(()) - это использование макроса?

1 Ответ

0 голосов
/ 02 февраля 2019

Технически, это не часть макроса (без продолжения до него).Это директива, которая идет после директивы #define.

# в своей строке называется нулевой директивой и ничего не делает (так же хорошо, как комментарий).

Это уже практически не полезно (кроме как визуальный маркер), но в доисторическом C препроцессор вызывался только в том случае, если исходный файл C начинался с директивы, а директива null, помещенная в самом начале файла C, былахороший способ убедиться, что файл был предварительно обработан (т. е. чтобы работали более поздние директивы), не начиная с конкретной директивы.

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