0

別の投稿のリンク テキストで

構造体で同じことをしようとしていますが、sizeof 演算子に問題があるため、整数の場合は次のようにしました。

size_t totalMem = rows * sizeof(int *) + rows * cols * sizeof(int));

そして構造体の場合、私はこれをしました:

size_t totalMem = (rows * sizeof(struct TEST *)) + (rows * cols * sizeof(struct TEST));

しかし、エラーが発生します: 構造体 TEST の不完全な型への sizeof の無効な適用。

何かご意見は?ありがとう。

4

3 に答える 3

3

構造体を次のように定義しているため

 typedef struct { ... } TEST;

構造体は常にTESTではなくとして参照する必要がありstruct TESTます。

 size_t totalMem = (rows * sizeof(TEST*)) + (rows * cols * sizeof(TEST));

使用struct TESTするには、実際に構造体に名前を付ける必要があります。

 struct TEST { ... };

両方を許可できます

 typedef struct TEST { ... } TEST;
于 2010-02-12T21:59:50.883 に答える
0
#include <stdio.h>
#include <stdlib.h>

#include "C2_Assignment_5_Exercise_2_Driver.h"

size_t ステートメントの一部として。.h ファイルの定義は次のとおりです。

#ifndef C2_ASSIGNMENT_5_EXERCISE_2_DRIVER_H
#define C2_ASSIGNMENT_5_EXERCISE_2_DRIVER_H

typedef struct
{
   char charObj;
   short shortObj;
   long longObj;
   double doubleObj;
} TEST;

#endif
于 2010-02-12T21:52:30.673 に答える
0

変化する:

typedef struct MYTEST
{
   char charObj;
   short shortObj;
   long longObj;
   double doubleObj;
} TEST;

size_t totalMem = (rows * sizeof(struct TEST *)) + (rows * cols * sizeof(struct TEST));

size_t totalMem = (rows * sizeof(struct MYTEST *)) + (rows * cols * sizeof(struct MYTEST));
于 2010-02-12T22:01:06.803 に答える