【问题标题】:__declspec(align) for multiple declarations__declspec(align) 用于多个声明
【发布时间】:2012-12-21 15:11:36
【问题描述】:

很抱歉,这个问题很简单,无法在谷歌上找到答案。

这是声明语法吗:

__declspec(align(16)) float rF[4];
__declspec(align(16)) float gF[4];
__declspec(align(16)) float bF[4];

等价于:

__declspec(align(16)) float rF[4], gF[4], bF[4];

或者在后一种语法中只对齐第一个变量?

如果重要的话,这些是全局方法中的局部变量。

【问题讨论】:

  • 这些声明出现在哪里?在类或结构中?
  • @DavidHeffernan 这些是全局方法中的局部变量。

标签: c++ visual-studio-2010 syntax memory-alignment declspec


【解决方案1】:

是的。 __declspec 是存储类的一部分,适用于声明中的所有声明符。

【讨论】:

  • 你们为什么一直删除和取消删除你的答案:)
  • 我回答了,然后大卫回答了相反的答案,所以我在验证它确实正确的同时删除了我的。我想确定一下。
  • 谢谢!您是否在任何地方的文档中发现了这一点,或者这纯粹是根据经验?
  • The documentation for __declspec 以“用于指定存储类信息的扩展属性语法使用 __declspec 关键字...”开头,存储类是声明的属性,而不是单个声明符的属性(就像static 适用于整个声明,而不是单个声明者)。我的快速测试验证了给定__declspec(align(64)) int a, b, c, d, e;,所有五个整数都在 64 字节边界上对齐。
  • 再次感谢您的全面帮助。
猜你喜欢
  • 2019-05-04
  • 2017-09-29
  • 2013-08-12
  • 2013-11-24
  • 1970-01-01
  • 2013-06-26
  • 1970-01-01
  • 1970-01-01
  • 2017-06-08
相关资源
最近更新 更多