c++ - "Objective-C is a superset of C more strictly than C++"到底是什么意思?

标签 c++ objective-c c

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

Objective-C is a superset of C (much more strictly than C++, in fact) so the issue of backward compatibility does not arise. Anything you can do in C you can do in Objective-C.

Being a superset is binary, like being pregnant. Obj-C is a superset of C, and C++ is not.

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

Objective-C 编译器可以在不修改的情况下编译任何 C 程序(100% 兼容性)吗?

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

最佳答案

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

  • 红色:在 C、C++ 和 Objective-C 中有效的所有程序的集合(相对较小)
  • 绿色:所有程序在 C 和 Objective-C 中有效,但在 C++ 中无效(甚至更小)的集合
  • 灰色:在 Objective C 和 C++ 中有效但在 C 中无效的所有程序的集合(据我所知是空的)
  • 蓝色:仅在 Objective C 中有效的所有程序集(相对较大)
  • 黄色:仅在 C++ 中有效的所有程序的集合(最大)

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

enter image description here

关于c++ - "Objective-C is a superset of C more strictly than C++"到底是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19366134/

相关文章:

c++ - Qt:如何在非事件窗口中显示选定的文本

c++ - 如何在给定范围内找到 std::set< pair<int, int>> 中的最大值?

iphone - UIScrollView 不可滚动

iphone - 将方法添加到 NSManagedObject 的子类中

c - 在 fork 和 exec 之后在父子之间共享一个文件描述符

c - 调用shell脚本后返回主C程序

c++ - 尝试解决 Collat​​z p‌r‌o‌b‌l‌e‌m 时得到奇怪的结果

iphone - NSDate从字符串给出错误的结果

java - 使用 C/C++ 的 ptrace Java 程序

c++ - 我想知道在调试时指针拥有特定的地址