C和C++可执行文件之间的区别?

Tan*_*ngo 2 c c++ executable binaries

我知道C和C++程序之间的源代码存在差异 - 这不是我所要求的.

我也知道这会因CPU和CPU以及操作系统而异,具体取决于编译器.

我正在自学C++,并且我看到了许多可以被两种语言使用的库的引用.这让我开始思考 - 这两种语言的二进制可执行文件之间是否存在显着差异?

对于两者都可以轻松使用的库,我认为它们必须在可执行级别上相似.

在许多情况下,某人可以检查可执行文件并判断它是否是由C或C++源代码创建的?或者二进制文件是否非常相似?

Jer*_*fin 6

在大多数情况下,是的,这很容易.以下是我经常看到的一些线索,可以轻松记住它们:

  1. C++程序通常最终会出现至少一些已被破坏的可见符号.
  2. C++程序通常至少会对虚函数进行一些调用,这些调用通常与您通常在C中看到的代码完全不同.
  3. 许多C++编译器实现了C++的调用约定,特别考虑将this指针传递给C++成员函数.同样,由于this指针在C中根本不存在,因此您很少会看到直接模拟(尽管在某些情况下,它们将使用相同的约定来传递其他指针,因此您需要注意这一点).