c - 导入模块——用 C 语言定制的模块

标签 c

我目前正在学习 C 编程语言,但在导入我创建的模块时遇到了一些问题。

我创建了一个小模块来使用 fgets 读取并完美地从 stdin 刷新缓冲区,我不想每次都继续编写代码。我只想像以前在 Python 中那样导入这个小模块。我不知道怎么做,因为我没有使用 IDE。我只是在终端中使用 gcc 进行编译并使用文本编辑器。我试图用谷歌搜索,但没有成功。

最佳答案

您应该为您的模块创建一个 header ,用于声明模块中的函数以及模块使用者需要的任何其他信息。您可以将该 header 称为 weekly.h,这是您名字的双关语,但您可以在合理范围内选择您喜欢的任何名称。

您应该创建一个库(共享的或静态的 — 由您决定),其中包含您的模块定义的函数(以及任何全局变量,如果您笨手笨脚的话)。您可以将其命名为 libweekly.solibweekly.a — 或者使用适合您机器的扩展名(.dylib.a 在 macOS 上,例如)。源文件可能是也可能不是 weekly.c — 如果函数不止一个,您可能会有多个源文件,因此它们不会都是 weekly.c。您应该将此代码(头文件和源文件及其 makefile)放入单独的源目录中。

您应该将 header 和库安装在一个众所周知的位置(例如,$HOME/include 用于 header ,$HOME/lib 用于库— 或者可能在 /usr/local 下的相应目录中),然后确保在编译时使用正确的选项(-I$HOME/include 用于 header )或链接(-L$HOME/lib-lweekly)。

使用该模块的源代码将包含:

#include "weekly.h"

您的代码将可用。对于 $HOME/lib 中的共享库,您必须确保运行时系统知道在哪里可以找到该库。如果您将它安装在 /usr/local 中,那么这已经为您完成了。如果将它安装在 $HOME/lib 中,则必须调查 /etc/ld.so.confLD_LIBRARY_PATHDYLIB_LIBRARY_PATH环境变量等

关于c - 导入模块——用 C 语言定制的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51913352/

相关文章:

c - SSL 上下文方法 - 通用与服务器/客户端

c - 访问结构数组会出现段错误

c - 预处理器 C 宏语法

c - C语言中int8_t变量始终为0

c - 稀疏 vector 的高效编码算法

c - 将数组传递给函数的正确语法

c - fread() 由于某种未知原因失败

将命令行参数复制到数组中

转换函数以从字符串而不是 C 中的文件读取

c - 我不理解这段c代码的几个方面