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.

[参考译文] CC1352R:实现 UNION

Guru**** 2457760 points


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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1024989/cc1352r-implementation-of-a-union

器件型号:CC1352R

您好!

IDE CCS 版本:9.3.0.00012  

编译器:TI v18.12.15

实施下一个联合体:

UNION

unsigned int 数据;
unsigned short data_1;
unsigned short data_2;
unsigned char data_buf[4];
}u_data;

DATA_Buf [0]= 0xAA;

DATA_Buf [1]= 0xbb;

DATA_Buf [2]= 0xcc;

DATA_Buf [3]= 0xdd;

我希望数据为- 0xddccbbaa、并且它是正确的。

DATA_1为0xddcc

data_2设置为 babba

问题出在这里。 data_1 =data_2 ->bbaa。 在调试器中、DATA_和 DATA_2具有相同的地址?

问题出在哪

此致、

Ilian

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="357615" URL"~/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1024989/cc1352r-implementation-of-a-union 数据_和 data_2具有相同的地址?

    是的、确实如此。  联合体的每个成员都具有相同的地址。  请参阅 此常见问题 解答(不是来自 TI)。

    谢谢、此致、

    乔治

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

    是的、但为什么 DATA_1和 DATA_2的值相同、它们是无符号短整型?

    此致、

    Ilian

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="357615" URL"~/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1024989/cc1352r-implementation-of-a-union/3791132 #3791132"]为什么 data_1和 data_2的值相同

    因为它们具有相同的类型和相同的地址。  由于一个联合体的每个成员都具有相同的地址、因此没有充分的理由让多个成员具有相同的类型。  C 语言的规范允许使用它、即使它不有用。   

    您可能需要将此联合体更改为类似于...

    union
    {
        unsigned int data;
    
        struct tag_struct_inside_union
        {
            unsigned short data_1;
            unsigned short data_2;
        } s;
    
        unsigned char data_buf[4];
    } u_data;

    对其中一个简短成员的引用类似于 u_data.s.data_1

    谢谢、此致、

    乔治

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

    您好、谢谢!

    此致、

    Ilian