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

我是C的初学者。当我写代码时,有时我写#include< string>并且代码工作,其他时候我不写#include< string>并且代码不起作用。但是有时它没有#include< string&gt ;. 所以我必须写#include< string>这样代码工作?
如果使用在标准标题字符串中声明的成员,那么是,则必须直接或间接(通过其他标题)包含该标题。

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

原因只是你已经包括其他标准头,也会包含字符串。但是正如我所说,这通常不能被依赖,它也可能会突然变化(例如,当安装新版本的编译器时)。

始终包含所有必需的标题。不幸的是,似乎没有一个可靠的在线文档,需要包括哪些标题。咨询一本书或官方的C标准。

例如,以下代码与我的编译器(gcc 4.6)一起编译:

#include <iostream>

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

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

http://stackoverflow.com/questions/9539650/why-does-omission-of-include-string-only-sometimes-cause-compilation-failur

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c – 为什么省略“#include”有时会导致编译失败?