Макросы для всего решения Visual C ++ 2010 с параметрами - PullRequest
0 голосов
/ 31 мая 2010

Я пытаюсь скомпилировать некоторый исходный код с помощью Visual C ++ 2010 Express. Код был написан для GCC и содержит такие атрибуты:

struct something {
...
} __attribute__((packed));

Поскольку это не стандартный синтаксис C ++, Visual C ++ его не распознает. С этим макросом до объявления структуры он работает нормально:

#define __attribute__(p)

Но я не хочу изменять файлы. Я создал новый лист свойств (GccCompat), перешел к Определениям препроцессора и добавил макрос, например:

__attribute__(p)

или как это:

__attribute__(p)=

Но это не работает. Это просто не называется. Если я определю просто __attribute__ (без параметров) в том же месте, макрос будет определен правильно. Обратите внимание, что генерируемая командная строка выглядит нормально (макросы с параметрами передаются точно так же, как и без), но компилятор, похоже, игнорирует это. Итак, как я могу глобально определить мой макрос с параметром?

Ответы [ 2 ]

1 голос
/ 31 мая 2010

Определение макросов в IDE, как правило, сосредоточено на природе создания флага / D: CPP_TOKEN для компилятора, т.е. #define CPP_TOKEN.

В расширенных настройках компилятора вы можете определить такой макрос как / D: " attribute (p) = / nothing /" или что-то подобное. Просто откройте командную строку VS и посмотрите, что она говорит. GCC 4.2 позволит что-то подобное (используя переключатель -D), но у меня нет под рукой MSVC10.

1 голос
/ 31 мая 2010

Это может быть невозможно, по крайней мере, так. Обратите внимание, что в документации Microsoft для параметра / D не указан синтаксис для макросов, принимающих аргументы.

...