“由于对齐说明符,结构被填充”VS 警告

‘structure was padded due to alignment specifier’ VS warning

提问人:Fedor 提问时间:5/9/2021 更新时间:5/10/2021 访问量:935

问:

如果在 Visual Studio 中,我指定类或结构的对齐方式,例如

struct __declspec(align(256)) A
{
};

我收到 4 级警告,如下所示“警告 C4324:”A“:由于对齐说明符,结构已填充”。 我是否以某种方式错误地指定了对齐方式,或者可以安全地忽略此警告?

C++ Visual-Studio 警告内存 对齐

评论

1赞 Jeaninez - MSFT 5/13/2021
一般来说,警告不会影响应用程序的运行。因此,在编程时通常会忽略警告。有关更多详细信息,我建议您可以参考链接:stackoverflow.com/questions/12501392/...

答:

3赞 eerorika 5/9/2021 #1

我是否以某种方式错误地指定了对齐方式

不,尽管您使用的是语言扩展。这可能是不必要的,因为有一个标准语法会更可取:

struct alignas(256) A
{
};

这个警告可以安全地忽略吗?

是的,忽略此警告是安全的,除非您认为填充是一个问题。

但是,我建议问问自己:为什么当一个班级没有成员时,你需要对齐它?

评论

2赞 Fedor 5/10/2021
没有成员的类只是为了简化示例。