我可以让clang为Objective-C文字对象使用自定义类吗?

时间:2012-08-11 18:51:11

标签: objective-c clang

gcc文档引用了-fconstant-string-class参数,该参数允许您更改用于@"Objective-C string literal"实例的类。我发现这似乎不适用于clang,使用这个来源:

#import <stdio.h>
#import <objc/runtime.h>

@interface ConstantString
{
    Class isa;
    char *c_string;
    unsigned int len;
}
@end
@implementation ConstantString

- (Class)class {return isa;}

@end

int main(int argc, char *argv[])
{
    fprintf(stderr, "%s\n", class_getName([@"foo" class]));
    return 0;
}

以这种方式编译这个编译器:

  

$ clang -v

     

Apple clang 4.0版(标签/ Apple / clang-421.10.60)(基于LLVM 3.1svn)

     

目标:x86_64-apple-darwin12.0.0

     

线程模型:posix

     

$ clang -fconstant-string-class = ConstantString -lobjc constantstring.m

     

架构x86_64的未定义符号:

     

“___ CFConstantStringClassReference”,引自:

  CFString in constantstring-C7icsk.o ld: symbol(s) not found for architecture x86_64 
     

clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

如果我链接到Foundation,那么我发现它仍然使用默认的常量字符串类:

  

$ clang -fconstant-string-class = ConstantString -lobjc constantstring.m    - 框架基金会

     

$ ./a.out

     

__ NSCFConstantString

那么你真的可以使用clang为字符串文字定义一个自定义类吗?并且可以更改数组,字典和数字文字的类吗?

0 个答案:

没有答案