C/C++, комментарии внутри макросов

203
05 ноября 2018, 21:00

Подскажите, можно ли делать в C/C++ внутри макросов комментарии?

И если да, то:

1) Как сделать комментарии в тривиальном многострочном макросе:

#define BEGIN_MACRO\
for (...;...;...)\
{\
    if (...)\
    {
        while (...)\
        {

2) Как сделать комментарии в многострочной макро-функции?

Answer 1

Комментарии в исходном коде заменяются на пробелы на самых ранних стадиях трансляции: после того, как произошло слияние строк исходного текста по символам \ на концах строк, но еще до того, как начнется какая-то "содержательная" работа препроцессора. Сформировавшееся после обработки \ разбиение на строки при этом сохраняется.

То есть вставлять комментарии в макро можно, но для этого следует использовать именно комментарии в стиле /* ... */ и не забывать ставить \ после такого комментария, чтобы макро не "разорвалось"

#define MAX(a, b) \
  /* Maximum */ \
  ((a) > (b) ? (a) : (b))

Однострочный комментарий // в макро получится использовать только в его последней строчке, ибо такой комментарий с символом \ на конце фактически станет многострочным и "проглотит" и следующую строчку макро.

Answer 2
#define BEGIN_MACRO\
/* Супер-пупер макрос */ \
for (...;...;...)\
{\
    if (...)\
    {
        while (...)\
        {

Ну и в функции - точно так же...

READ ALSO
Как в code::blocks указать библиотеку?

Как в code::blocks указать библиотеку?

Хочу например создать программу с glfw3, но появляется вот такое окно, в которое нужно вписать то ли include то ли lib, я не пойму как правильно это...

156
C++ API Speech Google

C++ API Speech Google

Всем добрый день, у меня есть вопрос, мне нужно на плюсах записать аудио в консольном приложении, отослать в google для распознавания и получить...

173
Как узнать нажата XBUTTON1 или XBUTTON2?

Как узнать нажата XBUTTON1 или XBUTTON2?

Есть хук, который отслеживает нажатие WM_XBUTTONDOWN и WM_XBUTTONUPМне необходимо понять какая именно боковая кнопка мыши нажата (1-я или 2-я)

166
В какой виджет выводятся текст, картинки, видео?

В какой виджет выводятся текст, картинки, видео?

Например в мессенджерах можно писать текст, вставлять картинки, вставлять может быть видеоНо в какой виджет это всё вставляется я не пойму?...

173