我目前正在学习C编程语言,并且在导入所创建的模块时遇到一些问题。
我创建了一个小模块,可以用fgets
读取并完美地从stdin刷新缓冲区,我不想每次都继续编写代码。我只想像在Python中一样导入这个小模块。我不知道怎么做,因为我没有使用IDE。我只是在终端中使用gcc进行编译,并使用文本编辑器。我试图用Google搜索,但徒劳无功。
答案 0 :(得分:1)
您应该为模块创建一个标头,以声明模块中的功能以及该模块的使用者需要的任何其他信息。您可以称该标题为weekly.h
,这是您名字的双关语,但您可以在推理范围内选择任何喜欢的名字。
您应该创建一个库(共享或静态,由您自己决定),该库包含模块定义的函数(以及任何全局变量,如果有必要的话)。您可以将其称为libweekly.so
或libweekly.a
-或使用适合您计算机的扩展名(例如,在macOS上为.dylib
和.a
)。源文件可能为weekly.c
,也可能不是weekly.c
—如果有多个功能,您可能会有多个源文件,因此它们不会全部为$HOME/include
。您应该将此代码(标头,源文件及其生成文件)放入单独的源目录中。
您应将标头和库安装在一个众所周知的位置(例如,标头为$HOME/lib
,库为/usr/local
—或者可以安装在{{1}下的相应目录中}),然后确保在编译(标题为-I$HOME/include
或链接(-L$HOME/lib
和-lweekly
)时使用正确的选项。
您使用该模块的源代码将包含:
#include "weekly.h"
,您的代码将可用。对于$HOME/lib
中的共享库,您必须确保运行时系统知道在哪里可以找到该库。如果您将其安装在/usr/local
中,则说明已经完成。如果将其安装在$HOME/lib
中,则必须调查诸如/etc/ld.so.conf
或LD_LIBRARY_PATH
或DYLIB_LIBRARY_PATH
环境变量之类的东西。
答案 1 :(得分:0)
您需要使用函数声明类型和extern变量创建头文件(.h)。然后,在要使用这些功能的程序中,包括此.h文件,并将已编译的.o文件(以及您的函数)添加到目标文件列表中。您完成了。