【发布时间】:2012-03-28 15:54:17
【问题描述】:
我希望以下代码会产生有关函数隐式声明的警告:
@interface TestClass : NSObject
@end
@implementation TestClass
- (void)foo {
NSString *test = [self bar];
NSLog(@"%@", test);
test = baz();
NSLog(@"%@", test);
}
- (NSString *)bar {
return @"bar";
}
NSString *baz() {
return @"baz";
}
@end
具体来说,我希望在声明之前会收到有关使用 bar 和 baz 的警告。 (bar 将被假定返回 id,baz 将被假定返回 int。)
GCC 会显示这两个警告,LLVM 的 Clang 2.9 也是如此。然而,Clang 3 显然可以找出 bar 和 baz 的存在以及它们返回的内容。 不会出现警告(除非功能被移除)。
(当baz在类外声明时,警告仍然出现。所以这只适用于Objective-C!)
太棒了!这将允许删除大量重复。但这是怎么回事?这是语言扩展吗?它是编译器功能吗?它是一个错误吗?还是我对此有误?我找不到任何关于此的文档,所以我对依赖它持谨慎态度。 有人有什么见解吗?
【问题讨论】:
-
就这样吧——太棒了!现在,如果他们能修复 LLDB....
标签: objective-c xcode warnings llvm clang