#include <file> #include < file.h> - 有什么区别?
#include <file> #include <file.h> - what's the difference?
可能重复:
<字符串>并且<string.h>?
我的具体示例使用以下子句:
#include <string>
如果我使用以下条款代替
#include <string.h>
编译器以错误结束
[BCC32错误]utils.cpp(173):E2316"getline"不是"std"的成员
utils.cpp文件中的第173行如下:
while(std::getline(in, line, 'n'))
我认为这两个条款没有区别。现在我很困惑。这两个条款实际上包括哪些文件?比方说,我的C++Builder安装有程序目录C:\program Files\RAD Studio\9.0,include文件位于子目录C:\program Files\RAD Studo\9.0\include.
#include <string>
这包括C++字符串标头。
#include <string.h>
这包括C字符串头,所有标识符都在全局命名空间中。(已弃用。)
#include <cstring>
这包括C字符串头,所有标识符都放在std::
命名空间中。
编辑:经验法则-C++标头永远不会以".h"结尾。在传统的C标头名称前加上"C",然后去掉".h"以保持全局命名空间的干净。仅对项目的C头使用".h"。对于仅限C++的标头,请使用".hpp"。
它们是两个不同的标头。C
标准库中的约定是标头以.h
结尾,而在C++
标准库中,约定是完全忽略文件扩展名。来自维基百科的更多细节:
C标准库中的每个标头都包含在C++不同名称下的标准库,通过删除.h,并在开头添加一个"c";例如,"time.h"变为"ctime"。这些头文件与传统的C标准库标题是,在可能的情况下,函数应该放在std::命名空间中(尽管实际上很少有编译器这样做这个)。在ISO C中,标准库中的函数允许由宏实现,这是ISO C++不允许的。
其他库遵循不同的约定。例如,Boost选择.hpp
作为其选择的C++
报头扩展。
按照惯例,C(Procedureal)标头以'.h'"string.h"、"stdio.h"结尾…和C++(主要面向对象)不包括任何扩展:"iostream"、"string"。。。
不确定是否所有标头都遵循此约定,但我认为标准标头都遵循。
- 我在 #include < bits/stdc++h.> 放置时出错"No such file or directory"
- QtCreator 中的"Fatal Error C1083: Cannot open include file"
- 名称空间从C 中的Include File继承
- Boost C++ Libaries in Visual Studio 2017 C++ Project - "Cannot open include file"
- PCC-S-02015, "unable to open include file"
- "Fatal error C1083: Cannot open include file"但我已将目录添加到项目中
- GMOCK 叮当讨厌的错误"/usr/include/limits.h:123:16: fatal error: 'limits.h' file not found"
- KDevelop 会自动在 #include < file.h 中的 # 后插入一个空格>
- 包括新文件夹中的头文件 "cannot open include file - no such file or directory"
- 必须包含存在 file.h "#include "的所有"file.o"文件" "
- #include <file> #include < file.h> - 有什么区别?
- #include <cmath> :"In FIle included from"错误消息?
- "Error C1083: Cannot open include file"但我有包含文件的路径
- 如何修复此错误:#include < gl/glut.h> "Cannot open source file gl/glut.h"
- 如何 #include "file.cpp"
- 错误"Cannot open include file",但它不包含在代码中
- Qt创建者:"Cannot open include file: 'windows.h'"
- Ubuntu16.04 在崇高的文本中运行 pcl 3, "fatal error: usr/include/pcl-1.7/pcl/point_types.h: No such file or di
- 尽管路径设置正确,但错误"C1083 cannot open include file gecode/int.hh"
- #include <cstdatomic> "no such file" 在 ubuntu 中