У меня есть проблема в моей программе, где я определяю тип структуры, но не структурную переменную в заголовке как таковой.Выделение памяти для типов структуры в C
typedef struct
{
int a;
int b;
int c;
Token d;
} Foo;
Затем я хочу использовать эту структуру foo
позже в .c файле, который делает инфикс к суффиксом
#include "header"
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include <stdlib.h>
int infix2postfix(char *infix, Arr arr)
{
struct Foo foo;
char szToken[MAX_TOKEN];
Stack stack = newStack();
infix = getToken(infix, szToken, MAX_TOKEN); //provides next token to be scanned by function.
... //push pop using switch case didn't post code for simplicity.
case...
push(stack, *foo.a);
...
case...
pop(stack);
...
goOut(arr, *foo.d); //goOut(function that populates and "arr" Array from printing.
}
Так что, когда я компилирую здесь я получаю
error: storage size of ‘foo’ isn’t known struct Foo foo;
У меня есть попробовал struct Foo *foo = malloc(sizeof foo);
выделить память, но она испортила мои push(stack, *foo.a);
и goOut(arr, *foo.d);
Как мне это исправить? Нужно ли мне сначала выделить память в функции infix2postfix
, а затем объявить структурную переменную?
У вас есть ЬурейеЕ в 'Foo'. Так что это должно быть 'Foo foo;'. То есть, нет 'struct'. – kaylum
yep typedef it to Foo –
Поэтому, пытаясь выделить память, это должно быть 'Foo * foo = malloc (sizeof foo);'? @Alan Au – jdanzi