从我在那里读到的: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++相关问答推荐

如何系统地使用软件预取?

将C中的2D char数组写入/读取到二进制文件

预处理器算法是否应该与编译所针对的体系结构相匹配?

如果两个数字是相同的 0,则在 C++ 和 Root 中设置 0 条件

为什么下面的循环展开会导致错误的结果?

您可以使用 C 内联汇编来对齐指令吗? (没有编译器优化)

C中指向结构的指针与指向数组的指针

Vmware Workstation 的 libusb_control_transfer 非常慢

如何正确解决 C 中的 memset() 函数 MISRA 错误?

16 位 x86 MS-DOS 实模式下的分段远指针分配

如何仅使用互斥锁来解决哲学家进餐问题?

K&R C 编程语言书中哈希表的有效性

复制具有“memcpy”技术上未定义行为的二维数组?

char 数组是否保证为空终止?

如果平台上“long”和“int”的大小相同 - “long”和“int”有什么不同吗?

假设指向同一个变量的两个指针是非法的/UB,为什么 C 编译器不能优化更改 const 指针的值?

为什么 long long 2147483647 + 1 = -2147483648?

为什么将 free 的返回值转换为 void?

Xlib 和 Firefox 行为

为什么要在 C 和 C++ 项目中创建 include/ 目录?