我目前正在学习 C 编程语言,但在导入我创建的模块时遇到了一些问题。
我创建了一个小模块来使用 fgets
读取并完美地从 stdin 刷新缓冲区,我不想每次都继续编写代码。我只想像以前在 Python 中那样导入这个小模块。我不知道怎么做,因为我没有使用 IDE。我只是在终端中使用 gcc 进行编译并使用文本编辑器。我试图用谷歌搜索,但没有成功。
最佳答案
您应该为您的模块创建一个 header ,用于声明模块中的函数以及模块使用者需要的任何其他信息。您可以将该 header 称为 weekly.h
,这是您名字的双关语,但您可以在合理范围内选择您喜欢的任何名称。
您应该创建一个库(共享的或静态的 — 由您决定),其中包含您的模块定义的函数(以及任何全局变量,如果您笨手笨脚的话)。您可以将其命名为 libweekly.so
或 libweekly.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.conf
或 LD_LIBRARY_PATH
或 DYLIB_LIBRARY_PATH
环境变量等
关于c - 导入模块——用 C 语言定制的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51913352/