В стандартном C вы не можете размещать в строке все, кроме комментариев, после #else
или #endif
.С компилятором на моем компьютере я получаю предупреждение от вашего кода по умолчанию:
test.c: In function ‘main’:
test.c:9:11: warning: extra tokens at end of #else directive [-Wendif-labels]
#else We can write any random words here without marking it as comment
^~
, и это становится серьезной ошибкой, если я запрашиваю строгое соответствие с C99.
Однако оригиналПрепроцессор "K & R" C сделал позволил произвольному тексту появляться в строке после #else
и #endif
, и старые программы использовали бы это.Ваш компилятор обратно совместим и позволяет этим старым программам компилироваться без ошибок.
Многие компиляторы C допускают множество вещей, которые в настоящее время считаются плохим стилем или совершенно неправильными, по умолчанию, ради разрешения старого кода.продолжать работать.Просмотрите руководство по Visual Studio и посмотрите, есть ли рекомендуемая конфигурация для новых программ.Я сам не пользуюсь VS, поэтому не могу дать более конкретного совета.