• [转]相互引用的结构体的定义


    https://blog.csdn.net/f290131665/article/details/17678851

    样例1(正确样例):

    typedef struct tagTest_B TEST_B_S;

    typedef struct tagTest_A
    {
    TEST_B_S *pstB;
    } TEST_A_S;

    struct tagTest_B
    {
    TEST_A_S *pstA;
    };




    看完上面这个样例,大家再来看看下面这个例子,看一下有没有什么问题?


    样例2(错误样例):

    typedef struct tagTest_B TEST_B_S;

    typedef struct tagTest_A
    {
    TEST_B_S stB;
    } TEST_A_S;

    struct tagTest_B
    {
    TEST_A_S *pstA;
    };

    如果我们使用VC进行编译(当然你也可以使用GCC编译),VC编译的时候会报错,如下:
    error C2079: 'stB' uses undefined struct 'tagTest_B'
    这是什么原因呢?

    这是因为声明的时候只是简单的表明是某种结构体而已,而结构体的内容我们不得而知。
    因此我们引用的时候只能使用指针而不能直接使用结构体,因为只有这样才能为结构体分配确定的内存
    (指针的内存始终是4字节,而未知结构体的内存大小是不确定的)。

  • 相关阅读:
    8.存储器
    7.计算机的总线
    6.计算机的字符与编码集
    5.计算机的计量单位
    JAVA 实用插件
    并发(三)
    并发(二)
    Java 8 Lambda
    并发(一)
    Mybatis(七)-- LRU LFU 算法
  • 原文地址:https://www.cnblogs.com/KonjakJuruo/p/10055421.html
Copyright © 2020-2023  润新知