我正在移植一个在Linux上完美运行的代码到windows visual c ++。 我在Linux中有这个代码:
struct exif_desc
{
uint16_t tag;
uint16_t type;
uint32_t length;
uint32_t value;
}
__attribute__((__packed__));
我在Windows上遇到错误:
'__packed__' : undeclared identifier
我想知道我是否可以使用
修复此错误#pragma pack(1)
它们之间有什么区别吗?是否有任何语法可以在Linux和Windows中用于此属性?
答案 0 :(得分:3)
__attribute__
是GCC扩展,专门针对GCC(以及其他试图与GCC兼容的编译器)。
#pragma pack
最初是Visual C ++编译器特定的扩展。正如评论者所指出的,它已经在GCC中实现,以及VC ++兼容性。
通常,您不能在另一个编译器中的一个编译器中使用扩展。例证:__attribute__
在Visual C ++编译器中不作为扩展名存在。