Одна (возможно, теоретическая) причина не для использования //
комментариев в том, что они не поддерживаются в C90. Это правда, что большинство, возможно, все современные компиляторы C поддерживают //
комментарии, даже если они не поддерживают остальную часть C99, но разные компиляторы поддерживают разные подмножества C99.
Любой компилятор, который поддерживает C90, отклонит (или хотя бы предупредит) о //
комментариях, если вы вызовете его в режиме, соответствующем C90.
Если вы фанатично относитесь к переносимости и хотите, чтобы ваш код компилировался с любым компилятором C, то вам следует скомпилировать его в режиме, соответствующем C90 - это означает, что комментарии //
будут отклонены. Вы можете включить расширения или частичное (или даже полное) соответствие C99, но тогда вы также включите другие функции C99 - и ваш компилятор не будет предупреждать вас о other Специфичные для C99 функции, которые вы можете использовать случайно.
И, как отмечает комментарий Эндрю Гримма, некоторые проекты могут иметь стандарты кодирования, которые требуют одну или другую форму.
Например, gcc поддерживает как комментарии //
, так и long long
(а также ряд других функций C99); включение //
комментариев в gcc отключение диагностики для long long
.
Но для большинства целей это, вероятно, недостаточно веская причина, чтобы избегать //
комментариев. Вы можете написать достаточно переносимый код, если вам известно, какие функции относятся к C99, какие компиляторы поддерживают эти функции и какие компиляторы вам нужны.