问题标签 [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.

0 投票
6 回答
2679 浏览

c++ - C ++:2个类如何在没有重新声明且没有标题的情况下相互调用

我对此有点问题。我有一个类 A 实例化 B 的对象,然后 B 实例化 A 的对象。这有可能吗?我尝试在每个标题中添加这个

但是如果让我处于一个无限的标题循环中,它会达到最大标题包含,所以很明显一个正在调用另一个,另一个正在调用那个。有什么办法可以做到这一点?

编辑:好吧,这似乎是一个很好的答案,但现在 A 抱怨说 B 没有构造函数,尽管它确实有一个构造函数。我想不通那个。

0 投票
7 回答
2675 浏览

c++ - 包括头文件样式 - C++

我有一个具有以下目录结构的项目。

所以说的文件foo.cpp必须src/module1包括,

这看起来很乱,很难写。我发现写作包括喜欢

root/include并在编译时提供包含文件搜索路径,看起来很整洁。但是,我不确定这种风格有什么缺点。

你更喜欢哪一个,为什么?您还发现以上述方式组织文件有什么问题吗?

0 投票
4 回答
7157 浏览

c++ - 什么时候可以接受仅标头库?

就个人而言,我非常喜欢仅包含标头的库,但有人声称它们会由于过度内联而导致代码膨胀(以及另一个明显的编译时间较长的问题)。

我想知道,这些说法(关于膨胀的说法)有多少真实性?

此外,成本是否“合理”?(显然有不可避免的情况,例如当它是一个纯粹或主要使用模板实现的库时,但我更感兴趣的是实际上有可用选择的情况。)

我知道就这样的事情而言,没有硬性规定、指导方针等,但我只是想了解其他人对这个问题的看法。

PS 是的,这是一个非常模糊和主观的问题,我知道,因此我将其标记为这样。

0 投票
3 回答
2797 浏览

c - 检查宏中函数的返回值

我有核心功能,可以从产品的定制模块中调用。

function_core是核心函数,它将返回整数,我们在头文件中有一个宏:

func_cust在我的自定义代码中调用。但在核心内部,我们再次调用其他一些核心函数:

所以我不能将所有参数都放入我的自定义代码中。

func_cust在许多C文件中调用此函数。

我需要检查函数的返回值,function_core例如如果function_core返回 x,那么我想将返回值更改为 0,否则将返回相同的返回值。

例如我想定义一个这样的宏:

这可能吗?

更具体地说,这就是我需要的!

这给出了一个错误:

“test_fun.c”,第 12.3 行:1506-045 (S) 未声明的标识符 sum_1。

我只能使用这个宏 sum_2。

0 投票
4 回答
22467 浏览

c - C中的头文件有什么意义?

可能的重复项:
[C] 每个源文件的标题。
在 C++ 中为什么有头文件和 cpp 文件?
C++ - .h 文件应该包含什么?

C 中存在头文件的唯一原因是开发人员可以快速查看可用的函数以及它们可以采用的参数吗?还是与编译器有关?

为什么没有其他语言使用这种方法?是我一个人,还是看起来有 2 组函数定义只会导致更多的维护和更多的错误空间?还是知道头文件只是每个 C 开发人员都必须知道的事情?

0 投票
3 回答
921 浏览

python - 使用 Cython 访问 C 标头幻数/标志

我想用 Cython 访问的一些标准 C 库有很多标志。Cython 文档声明我必须复制我需要的标头部分。当涉及到函数定义时,这很好。它们通常在任何地方复制,包括文档。但是那些神奇的数字呢?

如果我想调用mmap,我总是可以找到函数定义并将其粘贴到 .pxd 文件中:

但是调用它需要大量的标志,比如PROT_READ,MAP_ANONYMOUS等等。我对此至少有两个问题:

首先,寻找这些数字的确切定义位置是一件烦人的工作。事实上,我宁愿写一个 .c 文件并打印我需要的值。有没有更好的方法来查找给定标志的值,例如PROT_READ

其次,这些数字有多稳定?在提取了我需要的所有值并将它们硬编码到我的 Cython 源代码之后,在不同平台上编译的机会有多大,比如说PROT_READPROT_EXEC

即使答案是没有好的或适当的方法来做到这一点,我也想听听。只要我知道我没有遗漏任何东西,我总是可以接受有些东西很麻烦。

0 投票
4 回答
33178 浏览

c - 变量定义应该在头文件中吗?

我最近对​​C和编译过程 的基本知识已经生疏了。我试图找出以下问题的答案,但无法连接编译、链接和预处理阶段的基础知识。在谷歌上快速搜索也没有多大帮助。所以,我决定来到知识的终极来源:)

我知道:不应该在 .h 文件中定义变量。可以在那里声明它们。

原因:因为头文件可能会从多个位置包含在内,因此多次重新定义变量(链接器给出错误)。

可能的解决方法:在头文件中使用 header-guards 并在其中定义变量。

这真的是一个解决方案吗:不。因为标头保护用于预处理阶段。就是告诉编译器这部分已经包含了,不要再包含了。但是我们的多重定义错误出现在链接器部分——在编译之后。

这整件事让我对预处理和链接的工作方式感到困惑。我认为如果已定义标头保护符号,预处理将不包含代码。在那种情况下,不应该解决变量问题的多重定义吗?

这些预处理指令使编译过程免于在标头保护下重新定义符号,但链接器仍然获得符号的多个定义,会发生什么?

0 投票
5 回答
10841 浏览

c++ - 如何设置c控制台窗口标题

如何在 C 中设置控制台窗口标题?

这仅适用于linux,不适用于windows。

有人知道“跨平台”解决方案吗?(当然不是system ( title=blah )

0 投票
1 回答
2804 浏览

doxygen - 如何在源浏览器中排除私有标题?

我已经设置了SOURCE_BROWSER = NOVERBATIM_HEADERS = YES因为我希望客户能够看到头文件。但是,我只想让他们看到某些标题。最好的方法是如何做到这一点。

提前感谢您的帮助!


编辑:这似乎可行,但我会对任何其他更好的方式感兴趣。

0 投票
3 回答
863 浏览

c - 将 C #defines 导出为 shell 变量

在我的项目中,系统的各种目录、文件和其他组件的许多路径都存储为#defines 中的 s ,filenames.h所有需要它们的文件都包含在该文件中。它适用于编译生成的所有各种二进制文件,但该项目还包括一些使用相同路径的 shell 脚本。目前这意味着随着路径的变化,我所要做的就是编辑filenames.h和重新编译以获取可执行文件集以理解新路径,但我必须手动编辑每个 shell 脚本。

所以问题是,如何将其#defines变为 shell 变量,例如生成一些filenames.sh脚本,这些脚本将从其他脚本调用以初始化它们。例如:

会创造

当然,可以编写一个创建它的C程序(甚至将其打印到标准输出,然后在 shell 中以反引号执行),但我更喜欢更简单、更健壮的方法,比如写一个半-像 C 半壳一样运行的东西cpp会产生正确的输出,或者类似的东西。