#cpp #gcc
После препроцессирования исходного файла. Например такого int main() { return 0; } получается # 1 "main.cpp" # 1 "" # 1 " " # 1 "main.cpp" int main() { return 0; } Так вот, что значит # 1 "main.cpp", # 1 " ", # 1 " ",# 1 "main.cpp"? Читал про препроцессор, ничего не нашел по этому поводу. PS: Суть в том, что я хочу написать свой компилятор С++, а начать естественно с препроцессора так как это сама простая часть. Какой то сверх задачи не стоит, просто ради развлечения. И естественно, проверять препроцессор хотелось бы сразу. До того как я напишу всё. Отсюда и такой странный вопрос о препроцессоре. Ну и конечно я не планирую реализовывать все что есть в компиляторе. Только минимум.
Ответы
Ответ 1
В стандарте С++ этого нет. Насколько я знаю, GCC использует эти отметки только для того, чтобы в сообщениях об ошибках (и предупреждениях) номера строк и названия файлов были правильные. То есть чтобы номера строк соответствовали коду до препроцессирования, а не после. И если ошибка случилась в заинклуженом файле, чтобы это было указано в сообщении об ошибке. Пример: # 100 "foo.cpp" int main() { f } На этот код GCC выдает: foo.cpp:103:5: error: 'f' was not declared in this scope Смотрите, название файла и номер строки он взял не настоящие, а такие, как было указано после #.
Комментариев нет:
Отправить комментарий