Есть ли способ "отменить" эффект #line в C? - PullRequest
2 голосов
/ 23 декабря 2009

Я генерирую код C на основе информации, предоставленной другим файлом (файлом XML). Некоторые фрагменты C включены в этот XML-файл и должны быть дословно включены в мой сгенерированный C-файл. Я хочу использовать директиву #line, чтобы, если эти чанки содержали ошибку, пользователь увидел номер строки в файле XML, из которого получен чанк. Например, я хочу сгенерировать код вроде:

int main() {
   #line 35 "file.xml"
   ....
   #line
}

Я хочу как-то "закрыть" раздел #line, я имею в виду, что, если есть ошибка, например с закрытием} и сгенерированным моей программой, пользователь должен не видеть "ошибку в строке 36 файла file.xml", которая для них будет бессмысленной и запутать их.

Например, я мог бы представить, что сама по себе директива #line (как в моем примере) будет делать что-то подобное. Но это не работает, и в gcc docs на # line .

нет упоминаний о подобных объектах.

Есть ли какое-то такое средство, которое я пропускаю? Или я просто прошу чего-то, чего не существует? Как бы вы пошли о такой проблеме?

1 Ответ

3 голосов
/ 23 декабря 2009

Вам нужно выдать другую директиву #line «сброс» к строке и имени файла вашего исходного файла.

...