问题标签 [header-files]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 减少 cpp 翻译单元的数量是个好主意吗?
我发现如果有很多类,当我为每个类使用一个 *.h 和一个 *.cpp 文件时,编译时间会大大增加。我已经使用了预编译的头文件和增量链接,但是编译时间仍然很长(是的,我使用了 boost ;)
所以我想出了以下技巧:
- 将 *.cpp 文件定义为不可编译
- 将 *.cxx 文件定义为可编译
- 每个应用程序模块添加一个*.cxx 文件,并#included 该模块的所有*.cpp 文件。
因此,我最终只得到了 8 个翻译单元,而不是 100 多个翻译单元。编译时间缩短了 4-5 倍。
缺点是您必须手动包含所有 *.cpp 文件(但这并不是真正的维护噩梦,因为如果您忘记包含链接器会提醒您的内容),并且某些 VS IDE 便利性不适用于此方案,例如转到/移至实施等。
所以问题是,拥有大量 cpp 翻译单元真的是唯一正确的方法吗?我的把戏是已知的模式,还是我遗漏了什么?谢谢!
c++ - 引用你没有的类#include'd (C++)
我现在正在玩 Box2D 以获得乐趣,在掌握了一些概念之后,我决定为测试平台进行自己的测试(Box2D 带有一组示例,并且有一个简单的可扩展测试类用于制作你自己的测试)。我首先抓取了其他测试之一,删除了除函数签名之外的所有内容,并插入了一些我自己的代码。
但是,Box2D 的任何库都没有#includes,因此它不会编译(但只有我的文件错误,删除我的测试文件并且它编译得很好)。我想我一定是在移动东西时不小心删除了它们,但是在检查其他测试文件时,任何地方都看不到#includes。每个文件都使用在各种 Box2D 头文件中声明的数据结构和函数。这到底是如何编译的?
例如,这是剥离构造函数主体和顶部注释的预打包测试之一:
c - C 项目结构 - 每个模块的标头与一个大标头
在我的编程生涯中,我参与过许多 C 项目,头文件结构通常属于以下两种模式之一:
- 一个包含所有函数原型的头文件
.h
每个文件一个.c
文件,仅包含该模块中定义的函数的原型。
选项 2 的优点对我来说是显而易见的——它使在多个项目之间共享模块变得更便宜,并使模块之间的依赖关系更容易看到。
但是选项 1 的优点是什么?它必须有一些优点,否则它不会那么受欢迎。
这个问题适用于 C++ 和 C,但我从未在 C++ 项目中看到过 #1。
#define
s、 s 等的位置struct
也各不相同,但对于这个问题,我想关注函数原型。
python - 如何用 Perl 解析 C 头文件?
我有一个头文件,其中有一个很大的结构。我需要使用一些程序读取这个结构并对结构的每个成员进行一些操作并将它们写回。
例如,我有一些结构,如
现在,我需要阅读这篇文章并对每个成员变量应用一些操作,并创建一个具有不同顺序的新结构,例如:
是否有任何可用的 Perl 库?如果不是 Perl,其他类似 Python 的东西也可以。
有人可以帮忙吗!!!
c++ - 我可以编写没有标头的 C++ 代码(重复函数声明)吗?
有没有办法不必编写两次函数声明(头文件),并且在用 C++ 编程时仍然保持相同的编译可伸缩性、调试的清晰度和设计的灵活性?
objective-c - 错误:'GKPeerPickerController 之前的预期说明符限定符列表
我不断收到此消息(在标题中)。如果你想看看我在做什么,只需快速查看我的代码。我刚刚开始实施 Peer Picker,所以我还没有完全完成。我只需要在第一部分提供一些建议/帮助。该错误显示在两个#import 语句之间的.m 文件中,这意味着我在头文件中使用了 GKPeerPickerController 一定是错误的方式。
Bluetooth_Ad_Hoc_NetworkAppDelegate.h
Bluetooth_Ad_Hoc_NetworkAppDelegate.m
c++ - 使用来自另一个项目(目录)的头文件
我正在使用 Visual Studio 2008,我需要使用来自另一个项目的某些头文件。我试图在 C/C++ 常规属性窗格的“其他包含目录”中添加路径,但我的项目仍然出现相同的错误
我正在使用的所有其他 cpp 和头文件都是作为现有文件从另一个目录添加的,对于某些头文件,它会发出错误,而对于其他头文件则不会。添加其他包含目录后,错误没有变化。
有人可以帮助我吗,我被困住了,因为我需要调试...
c++ - C++ 包含文件浏览器
我有一个非常大的项目,其中包含大量相互包含的复杂头文件。它还依赖大量的第三方库。我正试图理顺混乱,但我遇到了一些麻烦,因为很多时候我会删除一个#include 指令,只是发现它包含的内容仍然包含在其他文件之一中. 有什么工具可以帮助我理解这一点吗?我真的很想能够点击一个 .h 文件并询问它包含(直接或间接)哪些 CPP 文件,以及包含它的路径,同样单击一个 cpp 文件并询问它是哪个 .h 文件。 h 文件包括(直接和间接)。我从来没有听说过可以做到这一点的工具,并且快速谷歌搜索并没有发现任何东西,但也许我没有
c++ - 从 .h 文件中删除已编译的方法及其后果
我有一个一直存在的二进制文件。它有一个 C 类,它也一直存在。我们必须在类 C 中引入一个新的方法 M,但我们只希望一些用户知道这种方法 M 的存在。
通过从 .h 文件中删除这种方法,我们可以引入哪个问题?这种方法会向后兼容吗?
编辑:我们实际上不在乎是否有办法找到方法。我们只是想确保只有知道自己在做什么的人才能使用它。
c - 未找到 mqueue.h
在我的一个应用程序中,我使用的是“mqueue.h”。我能够编译并执行它。但是我向其发布代码的一位客户正在抱怨类似
* 未找到 mqueue.h *
他没有附上确切的错误信息。在我的 linux PC 中,它位于 /usr/include 中。谁能猜出客户找不到文件的任何原因?
很抱歉提出如此琐碎的问题。