【发布时间】:2011-02-26 00:21:05
【问题描述】:
我正在尝试使用 Visual C++ 2010 Express 编译一些源代码。该代码是为 GCC 编写的,包含如下属性:
struct something {
...
} __attribute__((packed));
由于这不是标准的 C++ 语法,Visual C++ 无法识别它。在结构声明之前使用此宏,它可以正常工作:
#define __attribute__(p)
但我不想更改文件。我创建了一个新的属性表 (GccCompat),然后转到预处理器定义,并添加了宏,如下所示:
__attribute__(p)
或者像这样:
__attribute__(p)=
但它不起作用。它根本没有被调用。如果我在同一位置仅定义 __attribute__(不带参数),则宏定义正确。请注意,生成的命令行看起来不错(带参数的宏的传递与没有参数的宏完全相同),但编译器似乎忽略了它。那么,我怎样才能用参数全局定义我的宏呢?
【问题讨论】:
-
这是错字吗? GCC 扩展名是
__attribute__,但您在问题的 MSVC 部分中提到了__attributes__。 -
这是一个错字。我在实际项目中使用了
__attribute__。
标签: c++ visual-studio-2010 visual-c++ c-preprocessor