我经常听说Objective-C是C编程语言的"严格超集".C有几种方言/标准(即K&R,ANSI C,C90,C99,GNU扩展...); Objective-C最早是在20世纪80年代初开发的,所以它必须先于这些标准.然而,Objective-C 2.0是从2006年左右开始的,所以它可以基于更现代的C语言.那么,哪个"C"是Objective-C的超集?
我听说过Objective-C是C的正确超集,但是客观的C 2.0?
我问的原因是它不是,或者我误解了"正确的超集"这个短语,因为这段代码是有效的C语法:
#import <stdio.h>
int main () {
char *nil = "hello";
printf("%s\n",nil);
}
Run Code Online (Sandbox Code Playgroud)
但是不能在Objective-C 2.0中编译.显然,这是一个容易解决的问题,但我正在写一篇论文,并认为这是应该指出的.