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