不能正确包含头文件
Cannot include header files correctly
我有一个问题,我添加一些包括
#include <stdio.h>
#include <unordered_map>
#include <mysql.h>
使用此命令进行编译,
g++ -Wl,-Bsymbolic-functions -rdynamic -L/usr/lib/mysql -lmysqlclient -I/usr/include/mysql -DBIG_JOINS=1 -fno-strict-aliasing -DUNIV_LINUX -DUNIV_LINUX -I/usr/include/ -I/usr/include/c++/4.5/bits/ main.c -o program
当我删除MySQL和studio上的。h时,它说它找不到它们,但它可以在unordered_map上找到。Wtf ?
一些标准库头文件被命名为"string", "vector"等。你会发现文件"unordered_map"在你的包含目录,但你不会找到文件"mysql",只有"mysql.h"。
自C时代以来,大多数头文件都有一个扩展名,通常是.h
,它们直接对应于系统中的文件。在c++中,标准明确指定某些库组件具有不包含任何扩展的include指令,例如<unordered_map>
。这些库包含甚至不需要对应于文件,只需要在包含时提供所需的接口即可。相比之下,mysql.h
和stdio.h
和真实的文件必须包含在确切的名称中。
在stdio.h
的情况下,c++库定义了一个包含<cstdio>
,它包含了C的stdio.h
的所有功能,但将它们放在std
命名空间中,而不是全局的(这是C中唯一的选项)。
文件扩展名不可选!你可以说
的原因#include <unordered_map>
代替
#include <unordered_map.h>
是因为文件实际上被称为"unordered_map",没有扩展名。
c++确实有cstdio
头,它包装了C的stdio.h
,所以你可以包括它;至于MySql.h
,我不知道他们是否会有这样的替换品。
c++省略了系统头文件中的"。h"以区别于C头文件。在"标准C库的c++头文件"一节中详细介绍
相关文章:
- 使用mongocxx驱动程序时包含头文件问题
- 如何为包含头文件的目标编写生成文件?
- 如何在 CMakeLists.txt Qt Creator 中包含头文件?
- 当包含头文件的文件不在根项目文件夹中时,如何包含它
- 在生成文件先决条件中包含头文件的原因
- My Project的属性配置正确,但Visual Studio仍然无法打开包含头文件
- 在 PostgreSQL C 扩展中包含头文件
- 是否可以在C++中以间接方式包含头文件
- 是否需要包含头文件?
- 如何在不包含完整的文件系统头的情况下使用文件系统的类路径C++17?
- 我收到未声明的标识符错误,但我已包含头文件?
- 为什么我们需要构建一个提升库,仅仅包含头文件还不够吗,因为提升是模板
- C++:当顺序真正重要时,如何保证在项目中包含头文件的顺序
- 如何在C++中包含头文件时错误地重载
- 我在C++中无效使用不完整的类型类错误,如何正确包含头文件?
- 虚幻引擎4.16,C++包含头文件
- C++多次包含头文件
- 令牌之前的预期类名 '{' - 包含头文件和 CPP 文件
- 可以将标头文件包含在多个源文件中,而无需重复保护
- 有条件地将文件包含在C++标头中