问题标签 [c-header]

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 投票
4 回答
378701 浏览

c - 在 C 中创建自己的头文件

谁能用一个简单的例子从头到尾解释如何在 C 中创建头文件。

0 投票
3 回答
1059 浏览

c - 如何通过C中的头文件使函数可见

我在一个库中有几个头文件:header1.hheader2.h...我还有一个用于库的通用头文件:mylib.h

我希望用户导入文件并main.h访问其他头文件中的一些功能。

例如,在库中:

-

在我的主程序中:

0 投票
3 回答
2761 浏览

c - 在 C 头文件中放置内联函数是错误的吗?

我正在为几个编译器构建一个 C 项目,其中一些是旧版编译器,它们似乎没有链接时间内联支持,因此将static inline函数直接放在头文件中并且实际上让每个翻译单元都有自己的副本似乎是合乎逻辑的。

另外,我需要确保某些函数是内联的,以便在某些低级中断处理程序中调用时不会调用其他函数(即更改 CPU 寄存器),所以这不仅仅是让编译器选择它是否会影响性能.

但是,我的一位同事告诉我,这是一件不寻常的事情,我应该避免这样做。在项目的这一点上,我可能仍然可以重新安排所有内容,所以我想确认如果我们决定使用标题内联,从长远来看,我们是否会面临一些问题?

0 投票
1 回答
814 浏览

c - time.h 中定义的宏无法识别

最初,我想将 struct timeval 转换为 timespec 。

起初,这似乎并不困难,因为那里提出了一个解决方案: 是否有一种标准方法可以将 struct timeval 转换为 struct timespec?

一个宏,TIMEVAL_TO_TIMESPEC应该可以完成这项工作。

如文档(https://www.daemon-systems.org/man/TIMEVAL_TO_TIMESPEC.3.html)中所示,它只要求sys/time.h包含在内。但是当我尝试编译时我仍然得到相同的答案:`警告:函数'TIMEVAL_TO_TIMESPEC'的隐式声明[-Wimplicit-function-declaration]

我什至尝试编译文档中给出的示例:

编译时我得到:

我做错了什么?

0 投票
1 回答
905 浏览

gcc - Makefile 处理头文件

以下是我的makefile:

我想知道头文件(.h)如何在编译中发挥作用?因为所有操作都在 .c 文件上......

0 投票
1 回答
306 浏览

cython - Cython:调用 C 函数抛出“未定义符号”

我正在尝试将LMDB C API与 Cython 一起使用。

我想从头文件中导入以下定义:

所以我创建了一个.pxd文件:

我在 Cython 脚本中使用它:

这段代码编译得很好,但如果我运行它,我会得到:

这既发生在 Cython .pyx+.pxd设置中,也发生在 IPython 中键入的原型中。

如果我导入另一个符号,比如一个常量,我可以访问它。所以我似乎正在查看正确的头文件。

我没有看到我的语法和文档之间有任何差异,但我显然做错了什么。有人可以给我一个提示吗?

谢谢。

0 投票
1 回答
394 浏览

gcc - C 和文件

我的简单程序 compTest.c

在 Linux 系统上使用标准库并使用 gcc 进行编译时,是否需要包含 -lm 标志才能使其工作?

例子:

当我没有得到以下信息时:/tmp/cc1o7rtt.o:在函数“main”中:

0 投票
3 回答
1357 浏览

c - C:我如何知道我正在使用的功能需要什么标头?

C 中的示例程序(无标题):

我怎么知道我应该在前面加上什么包含标题(例如#include <stdio.h>:)?

0 投票
1 回答
797 浏览

ios - Form C 头文件“找不到'vector'文件”错误发生在swift中

我正在尝试将 Objective-C SDK 集成到我的 swift 文件中。但是当我想将 SDK 中的一些文件添加到我的桥接头中时,我收到了这个错误'vector' file not found

如果我想将其他文件添加到 swift 标头中,我也会得到未找到的字符串文件。

我发现这些是 C 头文件。SDK提供者给出了一些提示,比如创建一个.mm文件,但他们不知道。

我尝试添加所有 C 或 C++ 支持文件,例如libstdc++.6.tbd、libstdc++.6.0.9.tbd、libstdc++.6.0.9.dylib、libstdc++.6.dylib、libstdc++.dylib,但没有任何改变。

这是错误 https://pasteboard.co/InhuW5K.png

这是桥接头文件集成

我被这个错误困扰了几天。请帮忙。提前致谢。

0 投票
1 回答
111 浏览

c - 是否可以使用“touch”命令管理间接 .h 依赖项?

建议使用-MM选项来管理标头中的间接依赖关系。为什么我们不使用touch命令。我是否在这里遗漏了任何东西,或者只是因为它是一个 hack,我们想要保留时间戳的真正最后修改(看起来像侵入性方法)。

示例:-stack.h、stack.c、array.h、array.c 数组依赖于堆栈

另一件事:每次都需要使用-MM选项完全重新解析文件,对吗?而不是用这种touch方法,如果我没有错过任何东西,那就是一个优势,不是吗?