在C中使用自己的头文件调用函数

时间:2013-08-27 15:31:31

标签: c assembly project header-files

我是这个网站的新手&没有经验丰富的C,所以请原谅我在不知不觉中犯下的任何错误。 好的,所以我在C中有两个文件,一个包含一个函数,&另一个使用该功能。我想我需要为它创建一个头文件,但我不知道怎么做不到它&需要帮忙。 这是文件1:

#include<stdio.h>
int tempc=25,tempf;
int c2f(int c);
void main()
{ 
tempf=c2f(tempc);
printf("Celsius = %d,Farenheit=%d \n",tempc,tempf);
}
int c2f(int c)
{
int f;
f=9*c/5 + 32;
return f;
}

这是文件2:

#include<stdio.h>
int tempc=25,tempf;
extern int c2f(int c);
void extern show(void);
void main()
{
tempf=c2f(tempc);
show(); 
}

主要问题来自这里。你不妨考虑一下show功能。 实际上,我被要求将f1转换为.asm文件(使用tcc -S f1.c),然后使用汇编语言为show fn添加模块,创建.asm文件的.obj文件,&amp;使用f2的.obj文件,我将把它们放在项目中然后构建所有以创建.exe文件。但我相信如果我可以简单地使用2个文件作为.c运行程序(即标题部分已解决)我可以完成其余的工作。 最后一个问题是,不是创建我想要在上面做的标题,而是可以将这两个文件保持原样,&amp;创建一个头文件 - &gt;使它成为.obj&amp;将它添加到项目&amp;建立?

真诚的感谢任何想要帮助的人。

2 个答案:

答案 0 :(得分:1)

头文件旨在用作将函数“公开”到其他C模块的机制。例如,在c2f.c中定义一个c2f()函数,然后在c2f.h中创建一个原型(基本上只是一个占位符)。 c2f.h中的原型如下所示:

int c2f(int c);  /* Note the semicolon */

c2f()的实现是否在程序集或c文件中无关紧要。头文件只允许C模块调用c2f()。这是因为您提供链接器信息以查找函数的实际实现。然后,链接器将对该函数的所有调用与实现的实际地址进行匹配。因此,要使用c2f,只需在使用它的文件中引用c2f.h:

/* main.c */
#include "c2f.h"
...

答案 1 :(得分:0)

您需要将c2f放入标题和源文件中:

c2f.h:

int c2f(int c);

c2f.c:

int c2f(int c) {
    return 9*c/5 + 32;
}

然后编译,这样你就有一个c2f.o文件,在你使用它的两个c2f.h文件中包含main(),并将它们的编译链接到c2f.o文件。