从我在那里读到的:Why is Objective-C not very popular outside of the Apple community?

Objto-C是C的超集(事实上比C++更严格),因此不会出现向后兼容性问题.在C语言中你能做的任何事情都可以在Objective-C中实现.

超集是二元的,就像怀孕一样.Obj-C是C的超集,而C++不是.

他们说的超集是什么意思?Objective-C在哪些方面与C更接近//向后兼容?Objective-C在哪些方面比C++更遵循C哲学?

任何C程序都可以不经objective-C编译器修改就编译吗(100%兼容性)?

这更多的是关于编程语言设计和兼容性的问题,而不是关于哪个更好的问题.

推荐答案

我准备了一张简单的图表;这不是很漂亮,但希望能让人明白这一点:

  • Red:所有C、C++、Objul-C有效的程序集(相对较小)
  • Green:所有C和ObjuleC中有效的程序集,但C++中无效(更小)
  • Gray:所有的程序都在目标C和C++中有效,但C中无效(如我所知,空)
  • Blue:所有程序集仅在目标C中有效(相对较大)
  • Yellow:所有程序仅在C++中有效(最大)

有效C程序集(红色和绿色)是有效目标C程序集(蓝色)的严格子集

在此处输入图像描述

C++相关问答推荐

为什么PLT表中没有push指令?

字符串令牌化xpath表达式

在32位处理器上优化53—32位模计算>

C编译器是否遵循restrict的正式定义?

如何在IF语句中正确使用0.0

ESP32在vTaskDelay上崩溃

为什么GCC在每次循环迭代时都会生成一个数组的mov&S使用[]访问数组?(-03,x86)

ATmega328P EEPROM未写入

使用C时,Windows CMD中的argc参数是否包含重定向命令?

我在这里正确地解释了C操作顺序吗?

将uintptr_t添加到指针是否对称?

Boyer Moore算法的简单版本中的未定义行为

为什么realloc函数在此代码中修改变量?

为什么Linux无法映射这个PT_LOAD ELF段?

Realloc():中止的下一个大小无效(核心转储)

有没有办法减少C语言中线程的堆大小?

传递给函数的 struct 中的数组

从Raku nativecall调用时精度不同

为什么程序在打印每个数字之前要等待所有输入?

变量的指针右对齐,函数的指针左对齐