Почему ваш компилятор должен предупредить вас об этом.
Скажите, что ваш заголовочный файл выглядит так:
#ifndef X
#define X
// STUFF
// The next line does not contain an EOL marker (can happen)
#endif
Теперь вы включаете это из источника
#include "plop.h"
class X
{
}
Если компилятор включает файл технически, расширенный исходный код должен выглядеть следующим образом
#define X
// STUFF
// The next line does not contain an EOL marker (can happen)
#endif class X
{
}
Большинство современных компиляторов учитывают, что это может произойти, и прикрепляют дополнительный токен EOL к включенным файлам, чтобы этого не происходило (технически это не разрешено, но я не могу вспомнить ситуацию, когда это может вызвать проблемы).
Проблема в том, что некоторые старые компиляторы не предоставляют этот дополнительный токен (более совместимый со стандартами), но в результате вы можете в конечном итоге скомпилировать приведенный выше код (в результате они, как правило, предупреждают вас о двух вещах 1), пропущенных EOL в исходных файлах и 2) вещи после # endif