我在Linux cc编译器中使用C语言。我想要做的是创建一个包含main函数的main.c文件。我想创建一个没有main函数的Special.c文件,而是只有需要的特殊函数才能在main.c中调用。
我有更多的Java实践,例如在Java中我只创建两个类并使用继承来实现此目的。
但是,由于我是C的新手,我不知道该怎么做。我知道可能有一种方法可以使用.h文件和库,但我不知道如何在这里使用它。
非常感谢任何帮助。
答案 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;
}