2010-02-12 2 views
0

В другом посте link textВыделяя пространство для указателей на структуру

Я пытаюсь сделать то же самое с структурой, но у меня есть проблема с моим оператором SIZEOF, так и в целочисленном случае, я сделал это:

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

И в STRUCT случае я сделал это:

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

Но я получаю сообщение об ошибке: Invalid применение SizeOf к неполному типу структуры TEST.

Любые мысли? Благодарю.

ответ

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; 
+0

+1: за избиение меня – tur1ng

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 
+0

Редактировать ваши Ques спасибо, а не добавьте ответ. – kennytm

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)); 
Смежные вопросы