Я работаю над унаследованным проектом Borland C/C++, и многие функции проекта скрыты за #ifdefs, которые полагаются на определения, переданные компилятору. Я пытаюсь получить затмение, чтобы активировать эти разделы, используя символы для каждой конфигурации, но когда я просматриваю исходные файлы, большие разделы по-прежнему остаются серыми. Есть ли способ сказать, что eclipse об этих параметрах определяет, чтобы я мог изменить конфигурацию сборки и посмотреть, какие разделы кода компилируются правильно?Есть ли способ распознать виртуальные определения eclipse для каждой конфигурации сборки?
ответ
Это ссылка на проблемы described in this thread?
, скорее всего, проблема заключается в том, что файлы, которые вы задаете не нашли на пути поиска.
Разница междуmacro-
иinclude-files
является то, что: - макро файлы препроцессор только (т.е. определения макро извлекается), тогда как - включает в себя файлы фактически разобраны (т.е. заявления извлекаются также).Эти параметры должны работать так же, как опции командной строки gcc
-imacro
и-include
.Я вижу проблему сейчас.
У меня был отключен указатель для проекта.
Итак, сам файл был найден, но буфер для него был пустым, потому что он не мог найти файл в индексе.После того, как я немного углубился в коде, я обнаружил, что могу включить параметр «Следовать за отдельными заголовочными файлами при создании схемы» на странице предпочтений C/C++, а затем правильно проанализировать файл макросов ,
Или это связано с более поздними ошибок, как bug 197989? (быстрый индекс может быть неточным, если заголовок включен несколько раз)
Не совсем. Система, которую я сейчас настроил, представляет собой проект eclipse, содержащий весь исходный код, и makefile с несколькими компиляторами и кросс-компиляторами. У меня есть рабочая область, в настоящее время настроенная с несколькими конфигурациями сборки, каждая из которых имеет пользовательские символы, определенные в свойствах проекта. Что я хочу сделать, так это то, что eclipse сам определяет __COMPILER__ как BCB5 или любую из моих других строк компилятора, так что, когда я смотрю на исходный код, он распознает блоки, защищенные #if __COMPILER__ == BCB5 становятся активными при настройке конфигурации сборки который определяет их. – Thomas