【发布时间】:2013-02-03 21:41:40
【问题描述】:
我知道 C 和 C++ 程序之间的源代码存在差异 - 这不是我要问的。
我也知道这会因 CPU 和操作系统而异,具体取决于编译器。
我正在自学 C++,并且我看到了许多对两种语言都可以使用的库的引用。这让我开始思考——两种语言的二进制可执行文件之间是否存在显着差异?
为了让两者都能轻松使用库,我认为它们必须在可执行级别上相似。
在很多情况下,人们可以检查可执行文件并判断它是由 C 还是 C++ 源代码创建的?或者二进制文件会非常相似吗?
【问题讨论】:
-
您真正想问的是,任何一种语言的编译器如何导出函数(以及更普遍的符号)...
-
@Tango:二进制文件之间没有真正的区别;它们都是本机代码,以相同的格式存储。
-
可执行文件与用于创建它的语言没有任何关系。如果你有两个程序,一个用 C 语言,另一个用 C++ 语言,它们都做完全相同的事情,那么它们的可执行文件没有理由不能完全相同。然而,编译器往往会留下一些东西,使可执行文件可以识别为是用某种语言编写的——但这根本没有必要。
-
一般来说,这些人是正确的。但是,C 和 C++ 都不需要编译;相反,它们很可能被解释。解释只是另一种翻译方法,它转化为行为,而不是另一种编程语言。
-
您正在寻找的是 ABI。一个快速的谷歌会告诉你你需要知道的一切。
标签: c++ c executable binaries