This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28375D:在多种情况下的结构地址边界

Guru**** 2422790 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/764222/tms320f28375d-address-boundary-of-structure-in-the-several-case

器件型号:TMS320F28375D

我们的客户希望了解结构的地址边界、如下所示。

(1)在将结构变量全部 sampleA 声明为 sampleF 时、
结构实体所在的地址边界是什么?
此外、声明中是否会出现填充?

2) 2)声明指针并保护结构区域时、
结构实体所在的地址边界是什么?


struct sampleA{
长 A;
长 b;
};

struct sampleB{
短接 A;
短 b;
长 c;
长 d;
};

struct sampleC{
UNION{
短接 A[8];
long b[4];
} c;
};

struct 采样{
短接 A:8;
短 b:8;
短 c;
长 d;
};

struct sampleE{
短 b;
短 c;
结构采样 A;
长 d;
};

struct sampleF{
struct 采样的*pA;
短 b;
短 c;
长 d;
};

此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    首先、您需要了解 内置类型如何对齐。  结构与任何成员在最坏情况下的对齐方式对齐。   

    [引用 user="Yoshita]]\n 在将结构变量 all of sampleA 声明为 sampleF 时、
    结构实体所在的地址边界是什么?

    由于所有结构至少包含一个长整型、因此它们都在2字边界上对齐。

    [引用 user="Yoshita"]此外,声明中是否会出现填充?

    可以在结构内填充。  您显示的结构没有任何填充。  但是,请考虑以下示例...

    struct needs 填充{
    SHORT SHORT 字段;
    /*此处填充的1字*/
    long long_field;
    }; 

    [引用 user="Yoshita">声明指针并保护结构区域时、
    结构实体所在的地址边界是什么?

    包含指针的结构在2字边界上对齐。

    谢谢、此致、

    乔治