Что происходит, когда препроцессор видит SLOT (a) «1» #a

Я понимаю, препроцессор #define заменяет идентификатор с замена

#define <identifier> <replacement>

Предположим, у нас есть следующее:

#define SLOT(a) "1"#a

void myValue(int value);
SLOT(myValue(int));

Я это понимаю # средства взять строковый литерал. Таким образом, после макроса, мы бы не

"1""myValue(int)"

… по существу два строковых литерала спина к спине. Я предполагаю, что препроцессор автоматически объединяет два строковых литерала вплотную. Это правда? Где я могу найти информацию по этому факту?

0

Решение

Да, ваше понимание верно.

  1. # оператор является оператором stringizer.
  2. Два строковых литерала один за другим, разделенные 0 или более белыми
    пробелы объединяются в однострочный литерал.
2

Другие решения


По вопросам рекламы [email protected]