Обратная косая черта предназначена для «защиты» новой строки - препроцессор отбрасывает и \
, и новую строку при чтении в файле, помещая все это в одну логическую строку. (Ну, он также будет генерировать #line
разметки, чтобы компилятор мог также генерировать достойные сообщения об ошибках.)
Кто-то подумал, что раскладка была более разборчивой, чем эта:
#define A(CLASS) B(CLASS) void *D(const C*to);
Если вы представите, что B
, D
и C
, вероятно, заменены чем-то другим в файле, в выводе это будет выглядеть примерно так:
Monkey(Simian) void *Bananas(const sticks *to);
Должно быть, им было больше смысла, когда они писали макрос, вместо этого "видеть" это так:
Monkey(Simian)
void *Bananas(const sticks *to);
Я не уверен, что это улучшение (и я думаю, что я ненавижу стиль), но, надеюсь, теперь это имеет смысл.