Препроцессор C добавляет свои комментарии - PullRequest
2 голосов
/ 22 февраля 2010
  1. Если таковые имеются, как называются (очевидно игнорируемые GCC) комментарии ниже?
  2. Как мне от них избавиться?

Здесь:

eisbaw@leno:~/GCC$ cpp < /dev/null
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "<stdin>"
eisbaw@leno:~/GCC$ 

Ответы [ 2 ]

3 голосов
/ 22 февраля 2010

Они называются линейными маркерами, и вы можете использовать -P, чтобы cpp или gcc пропустить их.

Они описаны в разделе Выход препроцессора руководства cpp.

И я согласен с user30997, что вы, вероятно, не хотите от них избавляться. gcc игнорирует их в том смысле, что они не влияют на процесс компиляции, но они предоставляют полезную диагностическую информацию, когда ваш код компилируется неправильно.

2 голосов
/ 22 февраля 2010

Вы, вероятно, не хотите от них избавляться. Они вставляются препроцессором, так что любой компилятор, который читает этот модуль компиляции, может определить исходный файл и номер строки, которая порождает любую строку, которую он проверяет. Без этого вы не сможете получить значимых ошибок, таких как «синтаксическая ошибка в строке 7 main.cpp: ожидается точка с запятой». Или что угодно.

Если вы ДЕЙСТВИТЕЛЬНО хотите отказаться от них, вы всегда можете просто написать что-нибудь быстрое, что убьет все, что начинается с «#».

...