gpt4 book ai didi

c++ - 为什么省略 “#include ”有时只会导致编译失败?

转载 作者:行者123 更新时间:2023-12-02 10:27:47 26 4
gpt4 key购买 nike

我是C++的初学者。当我写代码时,有时我写#include <string>并且代码起作用,而其他时候我不写#include <string>并且代码不起作用。但有时它不需要#include <string>即可工作。

那么,我是否必须编写#include <string>才能使代码起作用?

最佳答案

如果使用在标准 header string中声明的成员,则必须是,必须直接或间接(通过其他 header )包括该 header 。

即使您未包含 header ,某些平台上的某些编译器也可能会在每月的某个时间进行编译。这种行为很不幸,不可靠,并不意味着您不应该包含标题。

原因很简单,您已经包含了其他标准 header ,这些 header 也恰好包含了string。但是正如我说的那样,通常不能依靠它,并且它也可能突然改变(例如,当安装了新版本的编译器时)。

始终包括所有必要的标题。不幸的是,似乎没有可靠的在线文档需要包含标题。查阅书籍或官方C++标准。

例如,以下代码使用我的编译器进行编译(gcc 4.6):

#include <iostream>

int main() {
std::string str;
}

但是,如果删除第一行,即使 iostream header 实际上不相关,它也不再编译。

关于c++ - 为什么省略 “#include <string>”有时只会导致编译失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63548476/

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