#define MAXLINELENGTH 8192
struct Image {
unsigned int height;
unsigned int width;
unsigned int value;
unsigned int maxValue;
unsigned int data[MAXLINELENGTH];
};
Image *Image_Init ()
{
Image *tmpImage;
unsigned int data[MAXLINELENGTH];
//if(tmpImage != NULL)
//{
tmpImage->height = 0;
tmpImage->width = 0;
tmpImage->value = 0;
tmpImage->maxValue = 0;
for (int i = 0; i < MAXLINELENGTH; i++)
{
tmpImage -> data[i] = data[i];
}
//tmpImage.data = {};
//return &tmpImage;
//}
return tmpImage;
}
unsigned int Image_Get_Height (Image *img)
{
Image *tmpImage;
int UINT_MAX;
UINT_MAX = tmpImage.height;
//int UINT_MAX;
//UINT_MAX = img.height;
return UINT_MAX;
}
发生错误,我不知道如何修复它。
c:73:错误:请求'tmpImage'中的成员'height',这是非类型'Image *'
请帮助解决此错误。
答案 0 :(得分:1)
Image *tmpImage;
/* ... */
UINT_MAX = tmpImage.height;
这里有两个问题。第一个是语法错误,您点.
来访问结构指针的成员,因此您应该使用->
。
第二个问题更严重,那就是你将使用一个未初始化的指针,它可能(并且可能会)在运行程序时导致崩溃。
答案 1 :(得分:1)
UINT_MAX
是标准的DEFINE,它是一个不可修改的值,即使int UINT_MAX
无效,因为UINT_MAX
将被实现的最大整数值替换,所以你会说
unsigned int Image_Get_Height (Image *img)
{
Image *tmpImage;
int 4294967295;
4294967295= tmpImage.height;
//int UINT_MAX;
//UINT_MAX = img.height;
return 4294967295;
}
这是无效的;)
它本身的错误只是说你试图通过点.
访问结构指针成员什么是不对的,因为它有->
运算符访问,如Joachim Pileborg所说他的回答。