header-files相关内容

包含 .cpp 而不是 header(.h)

在某些情况下,我们包含 .cpp 文件而不是标准头文件 (.h),例如: #include "example.cpp" 代替 #include "example.h" 它似乎有效,但这是否安全还是我应该避免它? 编译时间呢? 解决方案 这是懒惰的编码.使用头文件.是的,它们可以增加编译时间,但它们意味着您可以轻松地重新实现代码块,或者更好的是,其他开发人员可以随时重新实现.头 ..
发布时间:2021-12-28 20:18:50 C/C++开发

使用 cmake 处理头文件依赖项

我在一个小型 C++ 项目中使用 CMake,到目前为止它工作得很好......只需一点点:x 当我更改头文件时,它通常需要重新编译许多源文件(直接或间接包含它的那些),但是似乎 cmake 只检测一些源文件以被重新编译,导致损坏状态.我可以通过清除项目并从头开始重建来解决这个问题,但这绕过了使用 make 实用程序的目标:只重新编译需要的内容. 因此,我想我做错了什么. 我的项 ..
发布时间:2021-12-26 21:40:19 C/C++开发

如何在 C++ 源代码中读取 CMake 变量

我想将我的库的版本号存储在一个地方.所以我在 CMake 文件中定义了这样一个变量: SET(LIBINTERFACE_VERSION 1 CACHE INTEGER "版本的 libInterface") 有了这个定义,我可以根据微软的定义生成一个 version.rc 文件,我将其编译到库中,然后在我的 dll 文件的属性窗口中正确显示. 现在我也想在我的 C++ 源代码中使用这个 ..
发布时间:2021-12-26 21:29:35 C/C++开发

“XXX-Swift.h"在测试项目中找不到文件

我正在尝试调用我在测试项目中的 XCTestCase 子类的方法中的“main"项目中的 NSObject 子类的方法.主项目的 NSObject 子类导入“XXX-Swift.h"头文件(我混合了 Swift 和 Objective-C 代码).当我运行主项目时一切正常,但是当我运行调用该子类的对象的测试时,我收到一条错误消息,指出未找到导入中的 Swift 头文件. 我想我在测试目标中遗 ..
发布时间:2021-12-25 20:02:27 移动开发

.dll、.lib、.h 文件之间有什么区别?

为什么我应该在项目中包含一些 *.lib、.h 或一些其他文件?这些东西是干什么用的? 解决方案 .h:头文件,它是一个包含声明的源文件(与包含实现的 .cpp、.cxx 等相反), .lib:静态库可能包含代码或只是指向动态库的链接.无论哪种方式,它都是与程序链接的编译代码.静态库在链接时包含在您的 .exe 中. .dll:动态库.就像静态文件一样,但您需要将它与 .e ..
发布时间:2021-12-25 15:52:39 C/C++开发

C Typedef - 不完整的类型

所以,出乎意料地,编译器决定把这个吐出来:“现场客户的类型不完整". 以下是相关代码片段: customer.c #include #include #include "customer.h"结构客户结构;typedef struct CustomerStruct{字符 ID[8];字符名称[30];字符姓氏[30];字符地址[100];} 顾客 ;/* 处理这里结构的函数 */ ..
发布时间:2021-12-23 17:04:19 其他开发

安装 Visual Studio 2010(任何版本)只会在 C++ 头文件目录中安装 2 个文件

我在 Windows 7 工作站上安装了 Visual Studio 2010 Premium.在加载了一个测试 C++ 项目后,我注意到它无法定位 iostream.我查看了 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include 并注意到这里只有两个文件,srv.h 和 wmiatlprov.h 我在测试虚拟机上安装了 ..

尽管安装了 unixODBC,但缺少 sql.h 头文件

我使用的是最新的 Ubuntu 12.04 系统.我安装了 unixodbc(来自 ubuntu repos 的 v2.2.14)、MySQL 及其相关驱动程序.还连接到有效的 DSN.通过发出 isql DBName UName passwd 进行验证. 我正在尝试编译一个使用 ODBC 与数据库交互的 C 应用程序.我搜索的几乎所有地方似乎都表明我应该在某处安装“sql.h".find/ ..
发布时间:2021-12-12 12:43:21 其他开发

在哪里可以找到 off_t 类型的完整定义?

我正在使用 TCP 从客户端向服务器发送文件.为了标记文件的结尾,我喜欢在实际数据之前发送文件大小.所以我使用 stat 系统调用来查找文件的大小.这是 off_t 类型.我想知道它占用了多少字节,以便我可以在服务器端正确读取它.它在 中定义.但我不明白定义.它只是将 __off_t 或 _off64_t 定义为 off_t.在哪里寻找 __off_t?__ 也是头文件中大多数内容的前缀的惯例,当 ..
发布时间:2021-12-11 11:21:20 其他开发

如何在 C++ 中创建两个相互用作数据的类?

我希望创建两个类,每个类都包含另一个类类型的对象.我怎样才能做到这一点?如果我不能这样做,是否有解决方法,例如让每个类都包含一个指向其他类类型的指针?谢谢! 这是我所拥有的: 文件:bar.h #ifndef BAR_H#define BAR_H#include "foo.h"类栏{民众:foo getFoo();受保护:foo f;};#万一 文件:foo.h #ifndef ..
发布时间:2021-12-09 21:18:20 C/C++开发

使用命名空间标准;在头文件中

所以,我在规范文件中有以下内容 #include #include 使用命名空间标准:类我的东西{私人的:字符串名称;fstream 文件;//其他的东西民众:void setName(string);} 我在实现文件中也有 #include "MyStuff.h"使用命名空间标准;void MyStuff::setName(string name);{姓名 = 姓名} ..
发布时间:2021-12-09 21:09:18 C/C++开发

<conio.h> 在哪里?Linux上的头文件?为什么我找不到 <conio.h>?

可能的重复: Linux如何实现C的getch()函数? MS-DOS 中 conio.h 头文件的等效 Linux 版本是什么? 有没有办法替换它的功能?例如getch() 我使用 gcc 和文本编辑器 Geany 来编译 C 代码. 解决方案 conio.h 是一个 C 头文件,与旧的 MS-DOS 编译器一起使用以创建文本用户界面.针对其他操作系统(例如基于 Li ..
发布时间:2021-12-02 08:24:58 服务器开发

为什么我不应该包含 cpp 文件而是使用标题?

所以我完成了我的第一个 C++ 编程作业并获得了成绩.但是根据评分,我失去了包含cpp文件而不是编译和链接它们的分数.我不太清楚这意味着什么. 回顾我的代码,我选择不为我的类创建头文件,而是在 cpp 文件中执行所有操作(它似乎在没有头文件的情况下也能正常工作...).我猜评分者的意思是我写了'#include "mycppfile.cpp";'在我的一些文件中. 我使用 #inclu ..
发布时间:2021-12-01 15:32:59 C/C++开发

为什么我的包含守卫不阻止递归包含和多个符号定义?

关于包含守卫的两个常见问题: 第一个问题: 为什么不包含保护保护我的头文件免于相互、递归包含?每次我编写类似以下内容时,我都会收到关于不存在的符号的错误,这些错误显然存在甚至更奇怪的语法错误: "a.h" #ifndef A_H#定义A_H#include "b.h"...#endif//A_H "b.h" #ifndef B_H#define B_H#include "a ..
发布时间:2021-12-01 15:29:47 C/C++开发

“使用命名空间"在 C++ 头文件中

在我们所有的 c++ 课程中,所有的老师总是将 using namespace std; 放在他们的 .h 文件中的 #include 之后.在我看来,这似乎很危险,因为通过在另一个程序中包含该头文件,我会将命名空间导入到我的程序中,也许没有意识到、有意或想要它(头文件包含可以非常深入地嵌套). 所以我的问题是双重的:using namespace 不应该在头文件中使用,和/或有什么方法可以 ..
发布时间:2021-12-01 15:14:00 C/C++开发

为什么有头文件和 .cpp 文件?

为什么 C++ 有头文件和 .cpp 文件? 解决方案 嗯,主要原因是将接口与实现分离.头文件声明了一个类(或正在实现的任何东西)将做什么,而 cpp 文件定义了它将“如何"执行这些功能. 这减少了依赖关系,因此使用标头的代码不一定需要知道实现的所有细节以及仅需要的任何其他类/标头.这将减少编译时间以及实现中的某些内容发生变化时所需的重新编译量. 它并不完美,您通常会求助于Pi ..
发布时间:2021-12-01 14:54:23 C/C++开发

#include 和有什么区别?和#include“文件名"?

在 C 和 C++ 编程语言中,在 include 语句中使用尖括号和使用引号有什么区别,如下所示? #include #include "文件名" 解决方案 实际上,区别在于预处理器搜索包含文件的位置. 对于 #include ,预处理器以依赖于实现的方式搜索,通常在编译器/IDE 预先指定的搜索目录中.此方法通常用于包含标准库头文件. 对于 #include "fi ..
发布时间:2021-12-01 14:42:11 C/C++开发

在什么情况下我们需要包含 <cassert>?

在什么情况下我们应该包含cassert? 解决方案 总之,不要用;使用 . C++11 删除了“c...."标头不会污染全局命名空间的任何正式保证. 这从来都不是实际的保证,现在甚至都不是正式的保证. 因此,在 C++11 中,使用“c...."头文件变体不再有任何可以想象的优势,而有一个明显的缺点,即代码在一个编译器和它的版本上运行良好编译器,可能无法使用另一个编译器或 ..
发布时间:2021-11-30 11:29:54 C/C++开发

在头文件中初始化常量静态数组

我刚刚发现以下内容无效. //头文件课堂测试{const 静态字符数组[] = { '1', '2', '3' };}; 初始化它的最佳位置在哪里? 解决方案 最好的地方是在源文件中 //头文件课堂测试{const 静态字符数组[];};//源文件const char test::array[] = {'1','2','3'}; 您可以像尝试那样在类声明中初始化整数类型;所有其他类 ..
发布时间:2021-11-18 03:58:54 C/C++开发