Для предпочтения я использую третий стиль, за исключением включенных охранников, для которых я использую второй стиль.
Мне не нравится первый стиль на всех - я думаю о #define
как инструкция препроцессора, хотя на самом деле, конечно, это не так, это #
следуют инструкции препроцессора define
. Но, поскольку я так думаю об этом, кажется, что они не могут их разделить. Я ожидаю, что текстовые редакторы, написанные людьми, которые выступают за этот стиль, будут иметь отступ/отступ блока, который работает с кодом, написанным в этом стиле. Но мне не хотелось бы встречаться с ним, используя текстовый редактор, который этого не сделал.
Нет смысла пренебрегать древними препроцессорами, где # должен быть первым символом линии, если вы не можете также перечислить на верхней части головы все другие различия между этими реализациями и стандартом C, чтобы избежать другие вещи, которые вы могли бы сделать, чтобы они не поддерживали. Конечно, если вы действительно работаете с предстандартным компилятором, справедливо.
И есть дополнительное раздражение (например, ОП, упомянутое в вопросе), что редакторы часто имеют собственное представление о том, как условные блоки препроцессора должны быть (или не иметь) отступом. –
Старый компилятор VAX C (около 1986 года) выдаст ошибку, если в директиве препроцессора не было '#' в первом столбце. –