Определение, где определен тип - PullRequest
5 голосов
/ 27 декабря 2010

Я работаю над довольно большой кодовой базой, в которой происходит немного магии #ifdef. Я смотрю на один файл и пытаюсь определить, где определен тип. К сожалению, он включает в себя множество файлов, которые включают много файлов, которые включают много файлов и т. Д., Некоторые из которых определяют макросы, которые влияют на определения, которые вы можете использовать. Структура достаточно сложна, так что после 10-минутного анализа и включения цепочек включения я все еще не знаю, какое определение используется. Напомню, что в Visual Studio есть хорошая функция, где я могу щелкнуть правой кнопкой мыши по типу, и он покажет, где определен тип. Есть ли эквивалентный хороший инструмент для Linux, который читает файлы make и т. Д.? Я уверен, что есть, но я все еще просто использую vim + grep для своей среды разработки.

1 Ответ

4 голосов
/ 27 декабря 2010

Со сложными определениями и зависимостями эта функция также не всегда работает в Visual Studio.

Решение: попросите компилятор сбросить код после его предварительной обработки, попросите его распечатать директивы #line и #fileтоже.Найдите в результирующем файле ваш тип, а затем посмотрите на ближайшую директиву #file, чтобы узнать, откуда он.

(В GCC вы можете использовать ключ -E)

...