Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c GCC常量字符串布局无效_Objective C_Gcc - Fatal编程技术网

Objective c GCC常量字符串布局无效

Objective c GCC常量字符串布局无效,objective-c,gcc,Objective C,Gcc,我试图在Linux上使用GCC的-fconstant string class选项实现我自己的string类。我的班级布局如下 @interface String : RootObject //my root object class; it is essentially NSObject { char *c_string; unsigned int len; } 这正是方法(isaivar是从RootObject类继承的),但是当我尝试使用字符串文字(@“foo”)时,GC

我试图在Linux上使用GCC的
-fconstant string class
选项实现我自己的string类。我的班级布局如下

@interface String : RootObject //my root object class; it is essentially NSObject
{ 
    char *c_string;
    unsigned int len;
}
这正是方法(
isa
ivar是从
RootObject
类继承的),但是当我尝试使用字符串文字(
@“foo”
)时,GCC在编译时会给我以下错误

error: interface String does not have a valid constant string layout

谷歌搜索给了我答案,但询问者似乎从未解决过他的问题。该类包含的另一个ivar是从超类继承的
volatile int retainCount

您引用的规范中不包括
retainCount
ivar,请注意,在Cocoa中,它与GNU的ObjC库来自同一NeXTian来源,而不是类

这可能是您的问题,因为从根类继承它会将其放在
c_字符串
len
字段之前,从而破坏了预期的布局


移除它应该可以让它工作。

@JoshCaswell这就是问题所在。删除那个ivar解决了我的问题,所以,如果你愿意,你可以发布你的评论作为答案,我会接受的。太好了!答案贴出来了。