0

我是这个网站的新手,并且在 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 文件,并使用 f2 的 .obj 文件,我必须将它们放入项目中,然后全部构建以创建 .exe 文件。但我相信,如果我可以简单地使用 2 个文件作为 .c 运行程序(即解决了标题部分),我可以完成剩下的工作。最后一个问题是,是否可以保留这两个文件原样而不是创建头文件,并创建一个头文件-> 将其添加到项目中并构建?

衷心感谢任何试图提供帮助的人。

4

2 回答 2

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"
...
于 2013-08-27T15:38:27.370 回答
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文件。

于 2013-08-27T15:38:49.613 回答