gpt4 book ai didi

c++ - 错误 C2719 : '_Val' : formal parameter with __declspec(align ('16' )) won't be aligned?

转载 作者:可可西里 更新时间:2023-11-01 15:48:10 26 4
gpt4 key购买 nike

我正在尝试为 D3DXMATRIXA16 创建一个 vector 像这样:vector<D3DXMATRIXA16> matrices;并收到错误:

     d:\Program Files\Microsoft Visual Studio 9.0\VC\include\vector(717) :

error C2719: '_Val': formal parameter with __declspec(align('16')) won't be aligned

    e:\projects\emuntitled\em\emscratch\emshadow.h(60) :

:see reference to class template instantiation 'std::vector<_Ty>' being compiled with [ _Ty=D3DXMATRIXA16 ]

为什么会这样?

感谢您的帮助!

最佳答案

这是一个known issue [link dead] STL::vector 不能正确包含对齐数据,例如 D3DXMATRIXA16。一位海报指出了根本原因(或者至少是其中之一?): vector::resize 的声明按值传递对齐数据,而不是作为 const 引用。该线程中提出了几种解决方法,最安全的方法是完全删除 STL::vector。您可能还想自己修复 STL header 并重新编译 - 这实际上可能比听起来容易,但我自己还没有这样做。

编辑:链接现已断开(感谢@David Menard),这里是an alternative, more elaborate answer .

此问题已在 VS2012RC 中修复 - 这里有一个指向 a corresponding connect issue 的链接[链接死了]。事实证明,这实际上是 C++ 标准本身的一个问题,已于 2008 年修复。

关于c++ - 错误 C2719 : '_Val' : formal parameter with __declspec(align ('16' )) won't be aligned?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1281415/

26 4 0