我收到以下错误:
码:
LEMUR_PREALIGN char _stack[ sizeof(_Type) * _Count ] LEMUR_POSTALIGN;
完成错误:
附加信息:我试图在Visual Studio项目中使用indri.lib。
最佳答案
__attribute__
命令是gcc的编译器特定命令。它在this file的第52行中与 ((align))
command一起使用,其中:
实际上,Visual Studio确实具有类似的对齐命令: align
。但是有两个问题:
__declspec(align(#))
不支持默认的__attribute__ ((aligned))
行为,该行为将:__declspec(align(#))
是前缀。 __attribute__((aligned(#)))
是后缀。这意味着您的实际代码将需要在位置上有所不同:struct S { short f[3]; } __attribute__ ((aligned)); // gcc alignment definition__declspec(align(16)) strict S { short f[3]; }; // MSVC alignment
这里的要点是,通过编译使用
#ifdef
的任何行并烹饪自己的__attribute__ ((aligned))
,您可能最好通过__declspec(align(#))
编码。有关更多信息,请参见:GCC vs MSVC class packing and alignment
经过对lemur_platform.h的进一步研究,代码似乎已经为您完成了上述所有工作!您会注意到
#define LEMUR_POSTALIGN __attribute__ ((aligned))
包装在#ifndef WIN32
中。因此,您需要做的是在Visual Studio项目中定义WIN32
!