0

在另一个帖子链接文本中

我正在尝试对结构做同样的事情,但是我的 sizeof 运算符有问题,所以在整数情况下,我这样做了:

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

在 struct 案例中,我这样做了:

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

但我得到错误: sizeof 对不完整类型的 struct TEST 的无效应用。

有什么想法吗?谢谢。

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 回答