[问题] c++ 编译出来的程式档案比较大

楼主: descent (“雄辩是银,沉默是金”)   2014-12-04 19:50:04
typedef struct Str_
{
char c;
int a;
}Str;
Str ret_str()
{
Str str;
str.c='a';
str.a=1;
return str;
}
int main(int argc, char *argv[])
{
Str s;
s = ret_str();
s.c='c';
s.a=5;
return 0;
}
descent@debianlinux:return_struct$ gcc rs.c -o rs
descent@debianlinux:return_struct$ g++ rs.c -o rscpp
descent@debianlinux:return_struct$ ls -l rs rscpp
-rwxr-xr-x 1 descent descent 4912 Dec 4 19:47 rs
-rwxr-xr-x 1 descent descent 5128 Dec 4 19:47 rscpp
我一直以为这样的程式用 c++ compiler 编出来应该要和 c compiler
的大小一样。
作者: LiloHuang (十年一刻)   2014-12-04 19:59:00
用 nm 比较看看,CPP的版本应该会多出不少东西 XD如果整个程式码用 extern "C" {} 包住应该会很接近才是我想 C++ 编译器应该会多做 name mangling 的部分
作者: chchwy (mat)   2014-12-04 22:33:00
c++标准库比C大多了.
作者: littleshan (我要加入剑道社!)   2014-12-04 22:40:00
因为g++会看副档名,看到.c还是会用c compiler去编唯一的差别是g++会多连结libstdc++你用 gcc rs.c -o rs -lstdc++ 出来大小就一样了
作者: LiloHuang (十年一刻)   2014-12-04 23:08:00
我记得 g++ 的文件有写,默认都会用 C++ compiler ...g++ is a program that calls GCC and treats `.c',`.h' and `.i' files as C++ source files instead ofC source files unless -x is used.http://goo.gl/9QRrzC 官方文件出处
作者: littleshan (我要加入剑道社!)   2014-12-05 00:35:00
噢,那是我弄错了

Links booklink

Contact Us: admin [ a t ] ucptt.com