我正在和一群学校的朋友一起用 C 语言创建一个简单的 2D 游戏引擎。我想以面向对象的方式编写这个引擎,使用structs
类、函数指针作为方法等。为了模拟标准的 OOP 语法,我创建了一个create()
函数,它为对象分配内存空间。我正在测试它,我收到一个错误。这是我用来测试的两个文件的代码:
测试.c:
#include <stdio.h>
int main()
{
typedef struct
{
int i;
} Class;
Class *test = (Class*) create(Class);
test->i = 1;
printf("The value of \"test\" is: %i\n", test->i);
return 0;
}
实用程序.c:
#include <stdio.h>
#include <stdlib.h>
#include "utils.h"
void* create(const void* class)
{
void *obj = (void*) malloc(sizeof(class));
if (obj == 0)
{
printf("Error allocating memory.\n");
return (int*) -1;
}
else {
return obj;
}
}
void destroy(void* object)
{
free(object);
}
该utils.h
文件仅包含create()
和destroy()
函数的原型。
当我执行gcc test.c utils.c -o test
时,我收到此错误消息:
test.c: In function 'main':
test.c:10:32: error: expected expression before 'Class'
我知道这与我typedef
的一开始有关,以及我可能没有使用正确的语法。但我不知道正确的语法是什么。任何人都可以帮忙吗?