Вызывает cpp (препроцессор C) для удаления комментариев C ++ в Mac OS X - PullRequest
2 голосов
/ 09 ноября 2010

У меня есть отчет пользователя (к сожалению, я не могу проверить его из-за отсутствия соответствующего компьютера), что команда препроцессора C (cpp) в Mac OS X 10.6.4 не удаляет двойную косую черту C ++ / C99 // комментарии к файлам, которые он обрабатывает, независимо от того, какая опция ему предоставляется.Это версия gcc:

 i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664)

Можно ли как-то заставить его удалять такие комментарии, как можно было бы ожидать от препроцессора C ++ (это необходимо, потому что cpp используется как часть другой инструмент ).

Ответы [ 3 ]

2 голосов
/ 10 ноября 2010

Я нашел формулу, которая работает с командой cpp: try cpp -xc++ (обратите внимание на отсутствие пробелов между -x и c++).

$ printf '/* block comment */\n// line comment\nnot a comment\n' | cpp -xc++
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "<stdin>"


not a comment

контраст:

$ printf '/* block comment */\n// line comment\nnot a comment\n' | cpp -x c++
i686-apple-darwin10-gcc-4.2.1: c: No such file or directory
i686-apple-darwin10-gcc-4.2.1: c++: No such file or directory
i686-apple-darwin10-gcc-4.2.1: warning: '-x -x' after last input file has no effect
i686-apple-darwin10-gcc-4.2.1: no input files

Теперь '-x c++' ПРЕДПОЛАГАЕТСЯ для работы, и он работает на моем Linux-компьютере (с gcc 4.4, но я помню, что он работал так же давно, как gcc 2.95), поэтому кажется, что Apple сломала его.

Я действительно должен еще раз подчеркнуть важность предоставления полного и точного контрольного примера для подобных вопросов.Вчера мне не пришло в голову, что Apple представила ошибку, потому что я знаю, что ответ wilx должен был бы сработать , и в отсутствие точного описания того, что пытался пользователь OP, это было далеко.более вероятно, что у них было что-то еще в их фактической командной строке, которая сводила это на нет.Если бы командная строка и сообщения об ошибках, которые я показываю выше, были представлены в исходном вопросе, это было бы намного эффективнее для всех.

0 голосов
/ 10 ноября 2010

Одно частичное решение, которое, кажется, работает, вызывает gcc -E вместо cpp.

 -E                       Preprocess only; do not compile, assemble or link

Это действительно лишает // комментариев к Mac OS X.

Однако мне все еще любопытно, почему возникают проблемы с самим cpp.

0 голосов
/ 09 ноября 2010

Попробуйте добавить -x c++ или -x c -std=c99 в командную строку.

...