gpt4 book ai didi

C++ 编译和文件大小

转载 作者:太空宇宙 更新时间:2023-11-03 10:29:34 25 4
gpt4 key购买 nike

我用谷歌搜索过这个,但大部分结果都是关于编译器 A 与编译器 B 的。

这个问题源于我在网页设计方面的经验(知道网页设计中常用的语言不是编译的。CGI 是一个异常(exception)。)当您在网页中包含文件时,整个文件将下载到用户的计算机上。如果您使用 JavaScript 库 JQuery,则必须在 <head> 中包含 JQuery。为了使用它的功能。这让我想到了 C++ 编译器。

在 C++ 中,没有 #include <library> 几乎不可能编程。 .库是否与项目文件一起编译?是

例如,在这个简单的 Hello Word 程序中 #include <iostream> , iostream 头文件中的所有代码都编译了吗?将仅采用定义 cout 的代码并将其添加到此示例中会使文件的大小变小?编译器优化是否只负责编译来自 iostream 的必要代码? ?

#include <iostream>

int main()
{
std::cout<<"Hello World.";
return 0;
}

最佳答案

For example, in this simple Hello Word program #include , is all of the code in the iostream header file compiled? Will taking the ONLY the code that defines cout and adding it to this example make the size of the file smaller? Does compiler optimization take care of only compiling the necessary code from iostream?

是也不是。 C++ 包含是一种非常简单的机制。包含的 header 实际上只是与包含文件连接在一起,所以是的,简单的答案是您获得了包含的所有内容。

但是一旦以这种方式包含所有内容,编译器就会尝试消除所有未使用的位。对于许多(不是全部)头文件,这很容易观察到:如果您编译一个简单的 Hello World 程序,查看文件大小,然后包含更多头文件并重新编译它,可执行文件的大小通常是相同的(或差不多一样)。编译器确定您包含的大部分内容从未使用过,并再次将其删除。

但是也有异常(exception)。例如,某些 header 仅通过被包含,就会导致代码在应用程序启动时运行,这意味着即使不引用 header 中包含的任何内容,编译器也无法删除它。

关于C++ 编译和文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20936606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com