如何在C中定义通用函数

Fed*_*nzi 1 c header function

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

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

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

Bas*_*tch 5

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

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

制作一个myheader.h包含类型,函数和变量声明的头文件。

制作common.c包含通用功能(和通用变量)定义的实现文件

添加#include "myheader.h"里面的所有的program1.cprogram2.ccommon.c

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

gcc -Wall -g -c common.c -o common.o
Run Code Online (Sandbox Code Playgroud)

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

gcc -Wall -g program1.c common.o -o program1
gcc -Wall -g program2.c common.o -o program2
Run Code Online (Sandbox Code Playgroud)

稍后,学习如何制作程序库(例如静态库libcommon.a或共享库libcommon.so)(请阅读此howto)并使用类似的构建器make(请参见本文档以及本示例)。您的图书馆可能包含几个成员,common_a.o并且common_b.o....