Подтвердить что ты не робот

Как включить комментарии в стиле С++ в gcc при отключении ANSI?

Это только что появилось как вопрос, на котором я работал, поэтому немного поработал, и ответ - ExpertExchange. Поэтому я передаю вам первоначальный вопрос, Манчунг:

У меня есть проект, написанный в чистом C, который будет использоваться во встроенной системе. Итак, я использую чистый C, чтобы свести к минимуму размер кода.

Когда я компилирую проект, я использую флаг -ansi, чтобы убедиться, что код соответствует стандарту ANSI. Однако нижняя сторона использования этого ansi-флага заключается в том, что мне разрешено использовать только комментарии стиля C (/* comments */). Это дает мне головную боль, когда мне нужно использовать вложенные комментарии.

Итак, мой вопрос: какие переключатели/флаги можно использовать, чтобы позволить мне использовать комментарии в стиле C++ (//комментарии), одновременно поддерживая проверку ANSI?

Которая в значительной степени суммирует мой вопрос тоже.

4b9b3361

Ответ 1

В последних выпусках gcc, -ansi документируется как те же, что и -std=c89. Новый синтаксис комментариев доступен только с C99-стандартом, поэтому -std=c99 разрешит его.

Существует также -std=gnu89, что совпадает с -std=c89, но разрешает все расширения gcc (включая синтаксис комментария в стиле С++, который был расширением GNU задолго до его добавления в стандарт).

Также посмотрите на флаг -pedantic, который может дать вам некоторые полезные предупреждения.

Литература:

Ответ 2

Если вы хотите использовать комментарии стиля С++ только потому, что хотите комментировать блоки и получить головную боль о вложенности /*... */, вы можете использовать эту технику:

#if 0
... code ...
#endif

который также будет выполнять эту работу.

Ответ 3

Вы можете использовать препроцессор -lang-c-С++ для комментариев как в режиме ANSI, так и в стиле С++.

gcc -Wp,-lang-c-c++-comments -c source.c

Ответ 4

Если вы используете -ansi только для проверки совместимости, самым простым может быть подготовка цели script или makefile, которая копирует полное исходное дерево в папку ansi при исправлении//комментариев. В pseudo- bash:

SRC=main.c blip.c blip.h
cp makefile ansi-src/
for F in $SRC do
# does not handle // in string literals or /**/ comments!
sed 's/\/\/.*//g' < $F >ansi-src/$F
done
cd ansi-src
make CFLAGS=-ansi

Если ваш SCC поддерживает его, это также можно сделать фиксатором, который автоматически создает код на выделенном компьютере в режиме ANSI после каждой фиксации и отправляет вам отчет об этом.

Ответ 5

Я боюсь написания какой-то утилиты комментариев-перезаписи (как предлагает Лютер Блиссетт), возможно, это ваш единственный вариант. В современных версиях gcc отсутствует какой-либо флаг компилятора или CLI, который будет включать комментарии стиля С++ при использовании -ansi или -std=c89.

Возможно, вы сможете достичь того, чего хотите, приблизившись к нему под другим углом. Вы можете скомпилировать с помощью -std=c99 и использовать флаги компилятора, чтобы отключить не относящиеся к C99 расширения, которые вам не нужны (не зная больше о том, почему именно вам требуется соответствие ANSI, я не могу рекомендовать определенные флаги).

Ответ 6

Вы можете автоматически создать копию источника с комментариями и использовать их в своей программе.

например. это выглядит многообещающим

Ответ 7

gcc -x cpp заставит файлы обрабатываться как файлы С++, не переименовывая их.

Ответ 8

C имеет комментарии по стилю С++ уже почти десять лет, возможно, вам следует обновить?