小编Sah*_*her的帖子

在C++中,我为不吃的东西付钱吗?

让我们考虑C和C++中的以下hello world示例:

main.c

#include <stdio.h>

int main()
{
    printf("Hello world\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

main.cpp

#include <iostream>

int main()
{
    std::cout<<"Hello world"<<std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我在godbolt中将它们编译为汇编时,C代码的大小只有9行(gcc -O3):

.LC0:
        .string "Hello world"
main:
        sub     rsp, 8
        mov     edi, OFFSET FLAT:.LC0
        call    puts
        xor     eax, eax
        add     rsp, 8
        ret
Run Code Online (Sandbox Code Playgroud)

但是C++代码的大小是22行(g++ -O3):

.LC0:
        .string "Hello world"
main:
        sub     rsp, 8
        mov     edx, 11
        mov     esi, OFFSET FLAT:.LC0
        mov     edi, OFFSET FLAT:_ZSt4cout
        call    std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> …
Run Code Online (Sandbox Code Playgroud)

c c++

168
推荐指数
12
解决办法
2万
查看次数

标签 统计

c ×1

c++ ×1