事先道歉,因为这似乎是非常基本的.
我有我的链表文件linkedList.c,我想将它包含在我的新c文件中,这样我就不必再对整个链表进行编码了.在Java中,我只需将它放在同一个文件夹中,然后我就可以在新文件中创建类LinkedList的对象,但是C似乎不会以这种方式工作.如果我尝试使用
#include "linkedLIst.c"
Run Code Online (Sandbox Code Playgroud)
在我的新文件的开头然后我收到错误,因为main已经与我的布尔变量一起被定义了两次.我究竟该如何解决这个问题?
您可以使用#include任何类型的(语法上有效的)C代码,但通常不应该(按照惯例)包含.c文件.阅读有关C预处理器的更多信息.
在实践中,您应该考虑创建一些库(链接以供重用),并将您的共享代码分离为您将重复使用的.h头文件(包含定义)#include和实现.c文件.当然不要main在共享源代码中定义任何内容.在一些简单的情况下,并在某些操作系统上,你也可以共享一个单一的(或某些少数)对象文件(和相关的头文件).
您的共享头将声明函数和extern变量(以及#define一些宏).它还可以包含短函数的定义(及其主体). static inline
您的共享实现将定义这些(和其他)函数和变量.
C编程需要很多约定(你需要定义自己的约定).查看现有示例(来自github的一些免费软件源代码,或来自Linux发行版).对于可重用的容器库,请查看glib(来自GTK)以及sglib(使用大量预处理器技巧)和许多其他库.
因为C没有任何命名空间的概念,所以有明智的(出于可读性和其他原因)具有一致的命名约定,例如,通过一些公共前缀启动库的所有公共名称(函数和变量以及头中的宏).