gpt4 book ai didi

c - 头文件中的方法

转载 作者:行者123 更新时间:2023-12-04 03:15:13 25 4
gpt4 key购买 nike

为什么有些人把方法写在头文件里?

在过程文件和头文件中编写方法有什么区别?

代码如下:

Work.h

#include <time.h>

void DoWork(int n)
{
clock_t t = clock() + n * CLOCKS_PER_SEC / 1000;
while(clock() < t);
}

程序.c

#include <stdio.h>
#include "work.h"
int main(void)
{
printf("Starting work\n");
DoWork(100);
printf("Work has finished\n");
}

在过程文件和头文件中编写方法有什么区别还是相同?

编辑 1: 我知道的唯一区别是,如果我在过程文件中编写 DoWork(),那么在编译主程序时,我必须编译过程文件,然后传递目标代码。

谢谢。

最佳答案

除其他事项外,预处理器将递归地用包含的这些 header 的代码替换所有 #include 指令。 (基本上,它是一个愚蠢的文本替换机器。)结果是一个源文件,其中包含所有包含的 header 递归复制到其中,称为 翻译单元。实际上,这就是您的编译器所看到的(尽管现代编译器通常将翻译过程的不同阶段结合在一起以便更快)。
您可以让多个翻译单元为单个生成的程序做出贡献。 (事实上​​,任何超过 50 行的代码,这几乎就是标准。)

当您在 header 中定义函数(而不是仅声明它们)时,具有这些定义的 header 随后将包含在多个源文件中链接到某个可执行文件,然后链接器将找到相同函数的多个定义,并放弃发出令人讨厌的错误消息。

关于c - 头文件中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3725670/

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