【问题标题】:C++ Declspec alignC++ Declspec 对齐
【发布时间】:2010-09-30 08:51:58
【问题描述】:

您好,刚接触 Visual C++,有人可以解释一下 ConfParams() 在结构中声明的作用

__declspec(align(BYTE)) struct ConfParams
{
    BOOL m_timeout;
    DOUBLE m_caution;
    ConfParams();      
}

【问题讨论】:

    标签: c++ structure alignment


    【解决方案1】:

    有人可以解释一下结构中声明的 ConfParams() 的作用

    这是一个构造函数声明。

    在 C++ 中,除了默认的可访问性级别 structclass 是等效的。 struct 默认有public 成员,class 默认有private 成员。


    我不清楚你的主题为什么引用__declspec,但如果这就是你想知道的see here

    成员函数没有对齐,只有数据受到影响。

    【讨论】:

    • 谢谢,看到结构体中定义了构造函数,我很困惑。不太确定它是否与 __declspec 有关。
    【解决方案2】:

    谷歌说

    http://msdn.microsoft.com/en-US/library/83ythb65%28v=VS.80%29.aspx

    “使用 __declspec(align(#)) 精确控制用户定义数据的对齐方式(例如,静态分配或函数中的自动数据)”

    它将使编译器在字节边界上启动每个实例。如果没有它,实例将在机器自然边界上对齐 - 这可能是 4 个字节。

    【讨论】:

      猜你喜欢
      • 2011-09-14
      • 2018-01-10
      • 2023-03-04
      • 1970-01-01
      • 2013-07-24
      • 2012-07-23
      • 2015-09-24
      • 2014-02-19
      • 2020-07-17
      相关资源
      最近更新 更多