【发布时间】:2009-10-25 22:38:17
【问题描述】:
我尝试编译以下代码,但编译器不会这样做,因为“* 对于结构是非法的”是真的吗?
struct String {
int length;
int capacity;
unsigned check;
char ptr[0];
} String;
void main(){
char *s;
String *new_string = malloc(sizeof(String) + 10 + 1);
}
【问题讨论】:
-
在您的代码中
String是struct String类型的对象。 -
那我该如何解决呢?
-
在您的代码中,
String是struct String类型的对象。类似于:int a; void main() {; a *b = malloc(sizeof *b);} -
换句话说,结构声明末尾的
String声明了一个名为String 的String 实例。我猜你想去掉尾随的“字符串”。