在Visual Studio c ++中,默认情况下似乎包含一些标头。
例如,我可以不包含std::strncpy
或std::string
的情况下使用<string>
或<cstring>
,但不包含{{ 1}}或std::cout
。
然后,当我想使用g ++在Unix上编译源代码时,如果我忘记添加由于Visual Studio的隐含包含而无法使我满意的包含,则会出现编译错误。
默认包含的内容来自Visual Studio的什么地方?有没有办法为将来和现有的项目停用此行为?注意:我的Visual Studio项目未使用预编译的标头。
答案 0 :(得分:6)
Visual Studio默认不包含标题。但是,某些标头包含其他标头,因此,如果包含<iostream>
,则在某些编译器中有时可能包含<string>
,而且许多标头也包含<cstring>
。因此,您偶然将它们包括在内。
哪个标头包含哪些其他标头因库而异,所以请始终明确包含该文件使用的标头。