+ -
当前位置:首页 → 问答吧 → 只要#include就会链接进去?

只要#include就会链接进去?

时间:2010-09-20

来源:互联网

用Code::Blocks自带的MinGW,编译下面两段代码,第一个编译出来的exe只有6K,第二个编译出来有400多K。
只是#include<iostream>一下,程序中其实没有用到任何的IO相关函数,也会把IO库函数链接进去?
  1. int main()
  2. {
  3.     int i = 0;
  4.     return i;
  5. }
复制代码
  1. #include <iostream>
  2. int main()
  3. {
  4.     int i = 0;
  5.     return i;
  6. }
复制代码

作者: ahocat   发布时间: 2010-09-20

恩。。。

作者: rain_fish   发布时间: 2010-09-20

还有就是
#ifndef....

作者: rain_fish   发布时间: 2010-09-20

这么看来,很明显,是的

作者: starzhestarzhe   发布时间: 2010-09-20

照理头文件只是对函数或数据接口的描述,这编译器竟然不分青红皂白全都链接进去了,未免有些弱智

作者: ahocat   发布时间: 2010-09-20

  1. int printf(const char *format, ...);
  2. int main()
  3. {
  4.       printf("hello world\n");
  5.       return 0;
  6. }
复制代码
  1. #include<stdio.h>
  2. int main()
  3. {
  4.       printf("hello world\n");
  5.       return 0;
  6. }
复制代码
那为什么上面两段出来的a.out大小都是5522字节......

作者: liwangli1983   发布时间: 2010-09-20

iostream里面有变量定义,所以其实你是用到了

作者: hellioncu   发布时间: 2010-09-20

C和C++处理的方式有区别?

作者: liwangli1983   发布时间: 2010-09-20

回复 liwangli1983


    好像确实不一样。同样用MinGW,c编译出来的大小完全一样

作者: ahocat   发布时间: 2010-09-20