gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 15:46:20 25 4
gpt4 key购买 nike

我是这个网站的新手,并且在 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();
}

主要问题来了。您不妨考虑一下显示功能。实际上,我被要求将 f1 转换为 .asm 文件(使用 tcc -S f1.c),然后添加一个使用汇编语言显示 fn 的模块,创建 .asm 文件的 .obj 文件,并使用 f2 的 .obj 文件,我必须将它们放入项目中,然后构建所有内容以创建 .exe 文件。但我相信,如果我可以简单地使用 2 个文件作为 .c (即 header 部分已解决)运行程序,我可以完成其余的工作。最后一个问题是,是否可以按原样保留这两个文件,并创建一个头文件->将其设为 .obj 并将其添加到项目并构建?

衷心感谢所有试图提供帮助的人。

最佳答案

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

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

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

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

关于在C中使用自己的头文件调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18469779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com