Могу ли я установить переключатели командной строки visual studio 2005 в своем коде (например, через pragma / define)? - PullRequest
1 голос
/ 12 октября 2011

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

Ответы [ 3 ]

0 голосов
/ 12 октября 2011

Во-первых: компиляция / компоновка не выполняют ваш код C ++.Таким образом, вы не можете написать код C ++ piece'o и принять решение (изменить некоторые настройки проекта ЭТОГО проекта) на основе некоторых условий C ++ (например, if / else /...).

#pragmaи #defines - директивы препроцессора, как вы уже знаете.Хотя компилятор понимает #pragmas, возможности программирования ограничены и обычно зависят от компилятора.

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

Чтобы ответить на ваш оригинальный вопрос "как мнеизменить свойства проекта программно (не вручную)? ": Вы можете написать" код ", используя #pragmas & #defines (даже условные) в вашем коде для управления различными настройками.Обычно поддержка зависит от поставщика компилятора, поэтому ваш код, скорее всего, не будет переносимым (между компиляторами), если вы не будете осторожны.

В моем GCC я всегда находил c ++ config.ha хороший пример различныхдиректива cpp.На моем компьютере с Windows он установлен в X:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\mingw32\bits\c++config.h

Чтобы узнать поддерживаемые директивы cpp, RTM вашего компилятора.


Очевидно, что другой вариант - написать shell / perl / ..Скрипт для внесения изменений в настройки проекта / Makefiles.Я рекомендую это по сравнению с запутыванием в директивах cpp.:)

Конечно, эта опция будет изменять настройки до компиляции, а не во время .Но если это не проблема для вас, используйте скорее директивы cpp.

0 голосов
/ 12 октября 2011

Как уже упоминалось, операторы #pragma сильно зависят от поставщика.Для Visual Studio 2005 посмотрите здесь на поддерживаемые операторы #pragma: Директивы Pragma

Я также хотел бы вместе с thekashyap написать сценарий для изменения настроек проекта для каждого файла дляследующие причины:

  • В случае, если вам нужно добавить или изменить настройку, существует * одно * место для изменения.
  • Поскольку искать можно только одно, будущие сопровождающие знают, где найти специальные настройки для данного файла.Они не будут удивлены тем, что установлено вручную, что скрыто глубоко в диалогах настроек проекта.
0 голосов
/ 12 октября 2011

Есть некоторые # прагмы, которые могут, например, изменить генерацию / оптимизацию кода для блока кода, но я думаю, что это довольно ограниченная вещь.

...