【发布时间】:2010-06-03 06:51:46
【问题描述】:
我听说objective-C 是C 的适当超集,但objective-C 是2.0 吗?
我问的原因是不是,或者我误解了“正确的超集”这个短语,因为这段代码是有效的 C 语法:
#import <stdio.h>
int main () {
char *nil = "hello";
printf("%s\n",nil);
}
但不能在 Objective-C 2.0 中编译。显然,这是一个很容易解决的问题,但是我正在写一篇论文,感觉这是应该指出的。
【问题讨论】:
-
即使您没有包含任何 Objective-C 框架或运行时标头,它也无法编译的原因是因为您的项目可能有一个预编译的标头 可以 包括 Foundation 框架头文件(以及定义
nil的头文件)。 -
它确实为我编译,使用 gcc 4.4 和命令行
gcc some_file.m -o some_file。因此,虽然可能有有效的 C 程序不是有效的 Objective-C,但这不是一个。 -
This question 为“严格的超集”神话指出了一个更尖锐的反例:任何使用
id作为标识符的 C 程序都将无法编译为 Obj-C。
标签: c objective-c compatibility superset