【问题标题】:C#'s CA1900 warning - aligning fields on 4-byte boundariesC# 的 CA1900 警告 - 在 4 字节边界上对齐字段
【发布时间】:2018-06-26 02:29:48
【问题描述】:

运行分析器时,我得到这个:

警告 CA1900 结构“PageHeader”包含以下不可移植字段:“PageHeader.TicksInPage”

我确实打开了 [StructLayout(LayoutKind.Explicit)],并且 TicksInPage 定义为:

    [FieldOffset(14)]
    public int TicksInPage;

所以我可以看到如何存在非边界问题。我的问题是——这段代码已经在 32 位和 64 位 Windows 中运行了一段时间,没有任何问题。这是一个桌面应用程序,而不是服务器应用程序。我应该关心这个警告吗?

【问题讨论】:

    标签: c# memory-alignment analyzer


    【解决方案1】:

    这是说您的代码是特定于平台的,并且可能会根据您的代码是在 32 位还是 64 位操作系统或其他平台上而表现出不同的行为。而且您可能在项目构建配置中将平台目标设置为“任何 CPU”。

    【讨论】:

    • 好吧,我不确定 - 如果目标设置为“任何 CPU” - 这是否意味着应用程序也应该能够在 Itanium 上运行?
    • 从文档来看,该规则似乎明确针对安腾 (IA-64)。
    • 我就是这么想的——所以如果应用程序针对的是笔记本电脑/台式机用户,而不是服务器,我猜我可以放心地忽略该警告?
    猜你喜欢
    • 2023-03-25
    • 2017-07-28
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 2015-03-10
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多