Visual Studio 2005 игнорирует директивы препроцессора во время компиляции - PullRequest
1 голос
/ 13 марта 2009

Мы только что получили нового разработчика, и я пытаюсь настроить его на Dev Studio 2005 (версия, которую мы все используем в этом офисе), и мы сталкиваемся со странной проблемой, которую я никогда раньше не видел.

У меня есть код, который отлично работает в моей системе, и он не может его скомпилировать. Мы отследили проблему до его копии dev studio, игнорирующей директивы препроцессора.

Например, в свойствах проекта в C / C ++ | Препроцессор | Директивы препроцессора я добавляю DEFINE_ME. Который должен переводить в / D "DEFINE_ME" для компилятора. И так в моей среде разработки, но не в его.

Я подтвердил, что когда он проверяет код из репозитория исходного кода, он имеет ту же версию кода, что и я. И если я посмотрю в его свойствах проекта, все директивы там. По какой-то причине они просто не передаются компилятору.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 13 марта 2009

Убедитесь, что конфигурация проекта, которая создается в выбранной конфигурации решения, совпадает с той, для которой вы конфигурируете свойства, и / или что вы конфигурируете свойства для всех конфигураций проекта. Общая проблема с новыми установками VS заключается в том, что текущая конфигурация активного решения зависит от системы и может по умолчанию отличаться от вашей (например, Release vs Debug).

Вы можете просмотреть конфигурацию проекта в выводе сборки и / или проверить ее в Configuration Manager.

2 голосов
/ 02 сентября 2010

Я недавно столкнулся с тем же симптомом с VS2005. В конечном итоге мне удалось решить эту проблему путем явного добавления определений препроцессора через командную строку - диалоговое окно «Дополнительные параметры»:

Свойства конфигурации -> C / C ++ -> Командная строка

Когда я добавил '/DPROPERTY', он был распознан во время компиляции, тогда как добавление его в 'Preprocessor -> Preprocessor Definitions' ничего не сделало. Как ни странно, диалоговое окно командной строки показывало, что Visual Studio добавлял свойство в командную строку, хотя и в форме '/D "PROPERTY"'.

К сожалению, давление на график таково, что я не смог разобраться в проблеме достаточно глубоко, чтобы выяснить, что является основной проблемой, и почему она не работает "из коробки" для некоторых наших проектов, но не другие. Тем не менее, обходной путь выше стоит попробовать, если у вас есть этот симптом.

Кроме того, кредит, где кредит должен: идея пришла от этой темы .

...