C++/Java在打包编译的时候是否会去掉没有用到的头文件呢?

我有一段C++代码,其中引入了很多头文件,但是只用了一个。

1.请问在打包编译的时候是否会去掉没有用到的呢?
2.如果是java语言的话,这样引入不必要的包也会打包去掉吗?

#include <iostream>

#include <jsoncpp/json/json.h>

#include "a.h"
#include "b.h"


using namespace std;   

int main() {
  int a = 10;
  int& ra = a; 

  cout << &a << endl;  // 0x16fdfef5c
  cout << &ra << endl; // 0x16fdfef5c
  cout << ra <<endl;   // 10
}
回复
阅读 556
4 个回答

打包时不会去掉, 只要引入了就一定会打包, 只是同样不使用

新手上路,请多包涵

不会去掉,会生成ast tree,进而影响编译速度,但不会编译到最终的可执行文件中去。

Java还有点不一样,如果你引入的是第三方包,可以自行选择是否一并放入jar中。但是如果你引入的是 jre 的包,本身存在于 jre 中,不会打包到 jar 里面。

自然
    4
    新疆乌鲁木齐市
    新手上路,请多包涵

    印象中,反编译过java的class,没用到的 import会去掉

    撰写回答
    你尚未登录,登录后可以
    • 和开发者交流问题的细节
    • 关注并接收问题和回答的更新提醒
    • 参与内容的编辑和改进,让解决方法与时俱进
    推荐问题
    宣传栏