0
#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*' です

このエラーの解決にご協力ください。

4

2 に答える 2

1

UINT_MAXint UINT_MAXは標準の DEFINE であり、変更できない値であり、有効でさえありません。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 が回答で述べたように、演算子.でアクセスする必要があるため、正しくないドットで構造体ポインター メンバーにアクセスしようとしていると言っているだけです。->

于 2013-09-24T08:22:55.943 に答える
1
Image *tmpImage;
/* ... */
UINT_MAX = tmpImage.height;

ここで 2 つの問題があります。.1 つ目は、構造体へのポインターのメンバーにアクセスするためにドットを使用するという構文エラーです->

2 番目の問題はより深刻で、初期化されていないポインターを使用することになり、プログラムの実行時にクラッシュが発生する可能性があります (おそらく発生する可能性があります)。

于 2013-09-24T08:19:39.323 に答える