在h.c文件中:

#include <stdlib.h>

typedef struct
{
    int x;
}XS;

typedef struct
{
    XS x_array[10];
}YS;

extern YS y;


在m.c文件中:

#include "h.c"

int void main()
{
    YS y = malloc(sizeof(YS));

    y.x_array[0].x = 1;

    free(y);
    return 0;
}


这将无法编译,我不知道为什么。有人可以阐明这一点吗?

最佳答案

您的主体必须看起来像这样:

#include "h.h"
int main()
{
    YS *y = malloc(sizeof(YS));

    y->x_array[0].x = 1;

    free(y);
    return 0;
}


在h.h文件中:

#ifndef H_H
#define H_H
#include <stdlib.h>

typedef struct
{
    int x;
}XS;

typedef struct
{
    XS x_array[10];
}YS;

#endif

关于c - 声明和初始化全局结构时遇到麻烦,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33639804/

10-11 15:08