"只是有时会导致编译失败?-6ren"> "只是有时会导致编译失败?-我是 C++ 的初学者。当我写代码时,有时我会写 #include 并且代码有效,其他时候我不写 #include 并且代码不起作用。但有时它可以在没有 #include 的情况下工作. 所以我必须-6ren">
gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:54:12 25 4
gpt4 key购买 nike

我是 C++ 的初学者。当我写代码时,有时我会写 #include <string>并且代码有效,其他时候我不写 #include <string>并且代码不起作用。但有时它可以在没有 #include <string> 的情况下工作.

所以我必须写#include <string>这样代码才能工作?

最佳答案

如果您使用在标准 header string 中声明的成员,那么可以,您必须直接或间接(通过其他 header )包含该 header 。

some 平台上的

Some 编译器可能在每月的某些 时间编译,即使您未能包含 header 。这种行为是不幸的、不可靠的,并不意味着您不应该包含标题。

原因很简单,您添加了其他标准标题,而 恰好包含 string。但正如我所说,这通常是不可靠的,它也可能会突然发生变化(例如,当安装了新版本的编译器时)。

始终包含所有必要的标题。不幸的是,似乎没有可靠的在线文档说明需要包含哪些标题。请查阅一本书或官方 C++ 标准。

例如,下面的代码用我的编译器编译(gcc 4.6):

#include <iostream>

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

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

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

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