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

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

1

Решение

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

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

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

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

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

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

0

Другие решения

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

Тем не менее, альтернатива (предоставляется, а не как чистый) заключается в использовании Borland C Компилятор Препроцессор, например

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