创建多个文件并在C中链接它们

时间:2015-10-29 13:56:53

标签: c linux command-line-interface

我在Linux cc编译器中使用C语言。我想要做的是创建一个包含main函数的main.c文件。我想创建一个没有main函数的Special.c文件,而是只有需要的特殊函数才能在main.c中调用。

我有更多的Java实践,例如在Java中我只创建两个类并使用继承来实现此目的。

但是,由于我是C的新手,我不知道该怎么做。我知道可能有一种方法可以使用.h文件和库,但我不知道如何在这里使用它。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

假设special.c看起来像这样:

gcc -c special.c

然后您可以自己编译此文件:

#include <stdio.h>
#include "special.h"

int main()
{
    printf("in main\n");
    special_func();
    return 0;
}

这会生成special.o。那么假设你有这个用于main.c:

main

您的special_func函数调用#ifndef SPECIAL_H #define SPECIAL_H void special_func(); #endif ,但未在此文件中定义,因此需要知道如何调用它。那就是special.h内容的来源:

gcc -c main.c

这是一个函数原型。它声明了函数(即告诉你参数的数量和类型,以及返回类型),而不实际定义它。这允许从其他编译单元调用它。

所以现在你可以自己编译main.c:

gcc -o program main.o special.o

这会创建main.o.现在,您可以将它们链接在一起:

{{1}}

答案 1 :(得分:0)

我将通过示例向您展示:

main.c是具有主要功能的文件。

helper.h包含要在main函数中使用的函数的所有声明。 helper.c有定义。

现在,从技术上讲,你可以在helper.h中使用你的函数定义,但这不是一个好习惯。

然后您需要:

#include "helper.h"  

在main.c程序之上。 最后,您需要将所有.c文件一起编译。

喜欢:gcc main.c helper.c -o output

//main.c:
#include <stdio.h>
#include <helper.h>
int main()
{
int squareMe=5;
squareMe = helperFn(squareMe);
printf("%d", squareMe);

}

现在这是在你的helper.h中:

int helperFn(int input); //only function declaration

最后在helper.c中:

#include "helper.h"

int helperFn(int i)
{
 return i*i;
}