我收到以下错误:



码:

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!

    10-08 04:15