为什么C和C++中相同代码的对象文件大小会发生变化

Vik*_*kas 5 c c++

我在Visual Studio 2008的C和C++构建环境中编写了相同的代码行,但C代码的目标文件大小为5.5kb,C++代码文件大小为6.17 kb.为什么会有这种差异?

以下是两种环境中的代码:

#include <stdio.h>

struct S
{
    char c;
};
void func()
{
    int i;
    int j;
    printf("%d", i);
}

int main()
{
    struct S s;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Kir*_*sky 5

它在每种情况下链接不同的C运行时库.点击此处查看详细说明.例如,libcmt.libvs libcpmt.lib.

  • 因为C和C++是不同的编程语言. (8认同)
  • @Vikas:在C++中,你需要有代码来处理异常或C++特定的分配("new","delete").您可以尝试在C++项目中禁用异常处理,它应该降低文件大小. (3认同)

Jen*_*edt 5

仅仅因为你的代码在C和C++中有不同的含义.

  • 在C++中,您声明不接收任何参数的函数,在C中,您声明具有未指定数量的参数的函数.(永远不要改变签名main)
  • 函数名称在C++中被破坏
  • 函数可能会在C++中抛出异常
  • 可执行文件默认链接到不同的库
  • 因为缺少初始化i的调用printf具有未定义的行为.两种语言都可能会决定拍摄你的不同策略.