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

2023-12-27

我是 C++ 初学者。当我写代码时有时我会写#include <string>并且代码可以工作,其他时候我不写#include <string>并且代码不起作用。但有时无需#include <string>.

所以我必须写#include <string>这样代码就可以工作了?


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

Some编译器上some平台可能会在some即使您未能包含标题,也会编译该月的时间。这种行为是不幸的、不可靠的,并不意味着您不应该包含标头。

原因很简单,您已经包含了其他标准标头also碰巧包括string。但正如我所说,这通常是不可依赖的,而且它也可能会突然改变(例如,当安装新版本的编译器时)。

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

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

#include <iostream>

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么省略“#include ”有时会导致编译失败? 的相关文章

随机推荐