В MSVC любой способ увидеть все файлы #include при ошибке - PullRequest
2 голосов
/ 22 ноября 2010

Предположим, у нас есть 'foo.cpp', включает в себя 'bar.h', включает в себя 'baz.h', включает в себя 'grog.h', и в 'grog.h' есть ошибка. GCC выдаст сообщение, в котором будет что-то вроде «ошибка в файле grog.h, включенном из baz.h: 10, включенном в bar.h: 5, включенном в foo.cpp: 20».

Есть ли способ заставить MSVC выдавать подобное сообщение? Иногда вам нужно знать только сам файл, но нередко случается так, что использование цепочки #include полезно.

(Вы можете включить параметр / showIncludes на короткое время и посмотреть, где он включен, но он производит тонну выходных данных, и не совсем разумно оставлять его включенным после исправления ошибки.)

Ответы [ 2 ]

0 голосов
/ 22 ноября 2010

Visual C ++ в его более поздних версиях фактически делает довольно хорошую работу по включению контекстной информации, когда ошибка требует этого - ошибки шаблона указывают через цепочку включений обратно на строку вашего кода, который фактически вызвалошибка компилятора в boost/horrifically_complex_mpl_code.hpp, предупреждения о неоднозначных перегрузках показывают все возможные кандидаты и так далее.

Я не знаю ни одного способа сделать именно то, что вы хотите, хотя.Вы можете генерировать полностью предварительно обработанный исходный вывод, используя / P , но это не так удобно, как описанная вами функция.

0 голосов
/ 22 ноября 2010

За исключением более элегантного решения от кого-то другого, вы могли бы написать анализатор, который анализирует ваш выходной файл с включенным параметром / showInclude во что-то более читаемое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...