Objective c GCC常量字符串布局无效
我试图在Linux上使用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
-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解决了我的问题,所以,如果你愿意,你可以发布你的评论作为答案,我会接受的。太好了!答案贴出来了。