[問題] 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