在另一篇文章link text
中我试图用结构做同样的事情,但我的sizeof运算符有问题,所以在整数的情况下,我这样做了:
size_t totalMem = rows * sizeof(int *) + rows * cols * sizeof(int));
在结构案例中,我这样做了:
size_t totalMem = (rows * sizeof(struct TEST *)) + (rows * cols * sizeof(struct TEST));
但我收到错误:sizeof的应用程序无效到struct TEST的不完整类型。
有什么想法?感谢。
答案 0 :(得分: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;
答案 1 :(得分: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
答案 2 :(得分: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));