如何在c中定义通用函数

时间:2014-07-23 12:08:21

标签: c function header

我有两个c程序:program1.cprogram2.c

这两个程序都有三个或更多相同的功能。我如何定义它们一次并在两者中使用它?

一个例子:我有两个程序:simple-calculator.cscientific-calculator.c。 两者都有基本操作(加法,减法,乘法和除法)。我想定义一个thrid文件“basic-operation.c”并为每个操作创建一个函数,然后在这两个脚本中包含这些函数。

3 个答案:

答案 0 :(得分:4)

我猜你是在Posix系统上(Linux,MacOSX ......)

我假设您的两个源文件program1.cprogram2.c对应两个不同的可执行文件program1program2

制作包含类型,功能和广告的标题文件myheader.h变量声明

创建包含公共函数(和公共变量)定义

的实现文件common.c

在所有#include "myheader.h"program1.cprogram2.c

中添加common.c

common.c编译为目标文件common.o

gcc -Wall -g -c common.c -o common.o

编译program1.cprogram2.c中的每一个并将其链接到该目标文件common.o

gcc -Wall -g program1.c common.o -o program1
gcc -Wall -g program2.c common.o -o program2

稍后,学习如何制作程序库-e.g.静态库libcommon.a或共享库libcommon.so - (阅读this howto)并使用make之类的构建器(请参阅this documentation,以及this example })。您的图书馆可能包含多个成员common_a.ocommon_b.o ....

答案 1 :(得分:2)

每当我不止一次使用某个函数时,我会考虑将它作为我的一个库的一部分,我在后面的项目中将其包含在内。有些功能没有成绩,大多数功能需要重写才能使它们更具通用性和可重用性。但是值得一点点额外的工作。

警告:在程序世界中长大,我仍然在使用程序库代码,有一天我会将其正确地重构为对象等,是的。翻译:拖延太多的库太长时间往往会让你将遗留代码用于当前的项目,除非你比我更聪明,更有纪律。

然而,这并不是一个糟糕的开始。编写可重用代码并构建“一次编写,经常使用”代码的存储库是我衷心推荐的一种做法。

答案 2 :(得分:1)

Here是一个很好的描述。基本上,您编写包含公共代码的第三个文件,并将其编译到库中;您将这些函数的签名提取到头文件中;您#include两个程序文件中的标题;在链接过程中,您将新程序与已编译的库链接。