我对整个C语言还不太熟悉,但我的代码总是出现这个错误
UArray2.c:19:error: request for member ‘i’ in something not a structure or union
很明显是uarray。我在我的主要功能,但我不明白为什么它没有看到它。
这是我的.h文件。不太有趣。。。
//UArray2.h
#include <stdlib.h>
#include <stdio.h>
#ifndef UARRAY2_INCLUDED
#define UARRAY2_INCLUDED
#define T UArray2_T
typedef struct T *T;
#undef T
//#undef UARRAY2_INCLUDED //undef?
#endif
这是我的.c文件。很简单的东西。
//UArray.c
#include <stdlib.h>
#include <stdio.h>
#include "UArray2.h"
#define T UArray2_T
struct T{
int i;
};
int main()
{
UArray2_T uarray;
uarray.i=0;
return 0;
}
#undef T
那么,有人知道我为什么会得到这个编译错误吗?很可能是我干的蠢事。
最佳答案
在头文件中
typedef struct T *T;
这意味着当您声明变量
uarray
时,实际上是在声明一个指针。所以您应该将i
成员初始化为uarray->i = 0;
不过,这很可能会崩溃,因为指针未初始化,可以指向内存中的任何位置。为指针分配内存
UArray2_T uarray = malloc(sizeof(*uarray));
或者让它指向另一个结构
struct UArray2_T real_uarray;
UArray2_T uarray = &real_uarray;
关于c - C的新手……结构找不到我确定的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12471135/