我正在阅读关于 JAVA 和 C++ 之间差异的维基百科文章。一个区别是 C++ 提供了“多种二进制兼容性标准”。你能解释一下这意味着什么,或者暗示一个很好的参考。我有一个线索,这意味着用 C++ 编写的二进制文件非常便携,可以在任何操作系统或环境上使用。我希望得到确认和更精确。这是什么一回事呢?
如何生成二进制文件?是什么让它不便携?
谢谢并恭祝安康。
我正在阅读关于 JAVA 和 C++ 之间差异的维基百科文章。一个区别是 C++ 提供了“多种二进制兼容性标准”。你能解释一下这意味着什么,或者暗示一个很好的参考。我有一个线索,这意味着用 C++ 编写的二进制文件非常便携,可以在任何操作系统或环境上使用。我希望得到确认和更精确。这是什么一回事呢?
如何生成二进制文件?是什么让它不便携?
谢谢并恭祝安康。
究竟是什么int
意思?当调用带有 2 个参数的函数时 - 你是把第一个放在堆栈的第一个还是最后一个?或者你有一个堆上的结构并指向它?您是否允许将未知数量的参数传递给函数?你如何处理字符串;数组?您是在堆栈、堆还是在私有内存块中分配?您是否修改函数名称(以允许重载)或将它们用作源代码中的输入?您是否在 8 位、16 位或 32 位边界上对齐结构中的成员?
所有这些问题(以及更多问题)对一个二进制文件调用另一个二进制文件的方式产生了很大影响,而且大多数时候答案并不那么简单。
Java 并没有提供太多关于如何精确地完成二进制布局(毕竟它是一个 VM),而 C++ 提供了极大的灵活性来适应几乎所有可以想象的需求——因此它“提供了二进制兼容性标准”,不像Java(在您的示例中)