导入模块&x2014;C语言中的自定义模块
我目前正在学习C编程语言,在导入我创建的模块时遇到了一些问题导入模块&x2014;C语言中的自定义模块,c,C,我目前正在学习C编程语言,在导入我创建的模块时遇到了一些问题 我创建了一个小模块,用fgets读取,并完美地从stdin中刷新缓冲区,我不想每次都写代码。我只想像在Python中一样导入这个小模块。我不知道怎么做,因为我没有使用IDE。我只是在终端中使用gcc进行编译,并使用文本编辑器。我试图用谷歌搜索,但没有成功。您需要创建一个包含函数声明类型和外部变量的头文件(.h)。然后在要使用这些函数的程序中包括这个.h文件,并将编译后的.o文件(以及函数)添加到对象文件列表中。你就完了 您应该为模块创
我创建了一个小模块,用
fgets
读取,并完美地从stdin中刷新缓冲区,我不想每次都写代码。我只想像在Python中一样导入这个小模块。我不知道怎么做,因为我没有使用IDE。我只是在终端中使用gcc进行编译,并使用文本编辑器。我试图用谷歌搜索,但没有成功。您需要创建一个包含函数声明类型和外部变量的头文件(.h)。然后在要使用这些函数的程序中包括这个.h文件,并将编译后的.o文件(以及函数)添加到对象文件列表中。你就完了 您应该为模块创建一个标头,声明模块中的函数以及模块使用者需要的任何其他信息。你可以称这个标题为weekly.h
,这是对你名字的双关语,但你可以在合理的范围内选择任何你喜欢的名字
您应该创建一个库(共享或静态-由您决定),其中包含由模块定义的函数(以及任何全局变量,如果您太笨拙以至于有任何全局变量的话)。您可以将其称为libweekly.so
或libweekly.a
——或者使用适合您机器的扩展名(.dylib
和.a
,例如,在macOS上)。源文件可能是也可能不是weekly.c
——如果有多个函数,您可能会有多个源文件,因此它们不会都是weekly.c
。您应该将此代码(头文件、源文件及其makefile)放在单独的源目录中
您应该将标题和库安装在一个众所周知的位置(例如标题为$HOME/include
,库为$HOME/lib
,或者可能安装在/usr/local
下的相应目录中),然后确保在编译时使用正确的选项(-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
环境变量等因此,如果我确实理解了,除了创建一个包含函数原型的.h文件和在main.c中包含外,我还必须创建一个库(包含模块的源代码,.c文件)所以GCC可以在编译Python中的主要源代码时找到它们,用来创建一个包含init文件的目录。这就是我推荐的。在短期内,您可以考虑将对象文件保持在某个位置并明确地与之链接。但是如果您开始拥有多于一对这样的文件,则是BETE。r使用库。必须列出标准库的目标文件将是可怕的。您的库没有那么大的不同。