music 发表于 2020-6-16 18:31:38

gcc可以通过 cl无法通过 什么问题

#ifdef __ICL
#define DECLARE_ALIGNED( var, n ) __declspec(align(n)) var
#else
#define DECLARE_ALIGNED( var, n ) var __attribute__((aligned(n)))
#endif
#define ALIGNED_16( var ) DECLARE_ALIGNED( var, 16 )
#define ALIGNED_8( var )DECLARE_ALIGNED( var, 8 )
#define ALIGNED_4( var )DECLARE_ALIGNED( var, 4 )

#include <stdint.h>

typedef uint16_t pixel;

struct x264_weight_t;

typedef struct x264_weight_t
{
    /* aligning the first member is a gcc hack to force the struct to be
   * 16 byte aligned, as well as force sizeof(struct) to be a multiple of 16
*/
    ALIGNED_16(int16_t cachea);
    int16_t cacheb;
    int32_t i_denom;
    int32_t i_scale;
    int32_t i_offset;
}x264_weight;

=================

只要把宏ALIGNED_16注释掉,cl也是可以通过的。
什么问题啊?

0xAA55 发表于 2020-6-18 22:19:51

我知道你是谁了,你就是竹笋大师。

“对齐”的概念知道不?你需要针对你所谓的“cl”(目测MSVC)将DECLARE_ALIGNED定义为对齐方式。MSVC的对齐的定义方式和ICL的一致。
页: [1]
查看完整版本: gcc可以通过 cl无法通过 什么问题