Проект стандарта «ISO / IEC 9899: проект комитета 201x - 12 апреля 2011 г. N1570», раздел 6.10, фактически содержит пример этого:
ПРИМЕР В:
#define EMPTY
EMPTY # include <file.h>
последовательность токенов предварительной обработки во второй строке не является директивой предварительной обработки, поскольку она не начинается с символа # в начале фазы 4 трансляции, даже если это произойдет после замены макроса EMPTY.
Он говорит нам, что "... вторая строка не директива предварительной обработки ..."
Так для вашего кода
FOO #define BAR 1
является , а не директивой предварительной обработки, означающей, что будет заменена только FOO, и будет определен BAR , а не . Следовательно, выходной сигнал препроцессора:
#define BAR 1
BAR