我是这个网站的新手&没有经验丰富的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;建立?
真诚的感谢任何想要帮助的人。
答案 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
文件。