Показать иерархию #include в C++Builder

У меня возникли проблемы с чужим кодом, который выглядит как заголовочные файлы, включенные не по порядку. (Например, я получаю ошибки переопределения, некоторые из которых даже находятся в одном и том же файле!) Было бы полезно увидеть дерево #include, которое использует компилятор C++Builder, аналогично флагу -showInclude в Visual Studio. Есть ли такая функциональность? если так, как я могу получить к нему доступ? Я специально использую C++Builder 2007.

2 ответа

К сожалению, нет никаких опций компилятора Borland C для отображения иерархии #include д файлы. См. Документацию Embarcadero по BCC32 CLI.

Однако альтернатива (предоставленная, но не такая чистая) заключается в использовании препроцессора Borland C Compiler, например

CPP32 -Sr source.cpp # outputs source.i with comments and indentation retained

Это обычно происходит, если вы включаете несколько раз файлы, которые содержат глобальные константы, переменные и иногда даже #defines, Это очень распространено для приложений MDI, где мастер Form содержит включение ребенка Formи некоторые из них используют одни и те же библиотеки...

Иерархия включения не поможет, если вы не планируете редактировать все исходные файлы. #include порядок, который может привести к проблемам позже (особенно совместимость)...

Чтобы исправить это, вы должны инкапсулировать все такие файлы с

#ifndef _file_name_h
#define _file_name_h
// here your source and includes
#endif

заявления. Как в этом примере:

Это предотвратит множественные определения и компиляции на уровне предкомпилятора, поскольку исходный код будет обрабатываться только в первый раз (пока #define _file_name_h до сих пор не определено).

Другие вопросы по тегам