gpt4 book ai didi

c++ - 在 C/C++ 中#include 头文件

转载 作者:可可西里 更新时间:2023-11-01 18:42:03 24 4
gpt4 key购买 nike

在阅读了几个关于编译问题(尤其是 C++)的问题后,注意到在许多情况下问题是缺少 header #include。我不禁在无知中疑惑并问自己(现在问你):

为什么缺少的 header 不会自动检查并添加或请求给程序员?

例如,Netbeans 中的 Java import 语句可以使用此类功能。

最佳答案

还记得 Java 中 java.util.Datejava.sql.Date 之间的冲突吗?如果有人在他们的代码中使用了 Date,您无法判断他们是忘记了 import java.util.Date 还是 import java.sql.Date .

在 Java 和 C++ 中,无法确定缺少哪些 import/include 语句。所以两种语言都没有尝试。您的 IDE 可能会针对代码中使用的未声明符号提出建议。

这个问题在 C++ 中更加复杂,因为标准规定任何标准头文件都可以包含任何其他标准头文件。因此,在不直接包含定义它的头文件的情况下使用函数或类非常容易,因为您的编译器恰好间接包含了正确的头文件。生成的代码在某些实现中有效,但在其他实现中无效,具体取决于它们是否共享该 header 依赖项。

C++ IDE 通常不可能判断头文件依赖性是否“得到保证”,或者仅仅是用户不应依赖的附带实现细节。显然,对于标准库,它可能只知道在哪些 header 中定义了什么,但是一旦您进入第三方库,它就会变得非常不确定。

我认为大多数 C++ 程序员都希望必须查找哪些 header 定义了哪些符号。使用 Java,每个文件一个公共(public)类的规则大大简化了这一点,您只需导入所需的包/类。 C++ 没有包,IDE 查找名为 my_namespace::something::MyClass 的类的唯一方法是在每个头文件中搜索它。

关于c++ - 在 C/C++ 中#include 头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2492809/

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