代码之家  ›  专栏  ›  技术社区  ›  Searock

头文件中的方法

c
  •  2
  • Searock  · 技术社区  · 16 年前

    为什么有些人在头文件中编写方法?

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

    代码如下:

    #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(),那么我必须编译过程文件,然后在编译主程序时传递目标代码。

    谢谢。

    2 回复  |  直到 16 年前
        1
  •  3
  •   sbi    16 年前

    预处理器将递归地替换所有 #include 指令由这些头的代码组成。(基本上,它是一个愚蠢的文本替换机器。)结果,一个包含所有递归复制到其中的头的源文件被称为 翻译单位 . 实际上,这是您的编译器所看到的(尽管现代编译器通常将翻译过程的不同阶段结合在一起以加快速度)。

    当你是 标头中的函数(与仅 声明

        2
  •  1
  •   pmg    16 年前

    这一切归结为“项目管理”。

    (尽管有例外)

    在一个小项目中(比如上面的“工作”项目),很容易看到没有代码重复,但是随着时间的推移和项目的增长,事情变得越来越难管理。如果你的几个“.c”文件 #include "work.h" ,它们中的每一个都将获得函数定义的副本 DoWork . 如果将函数定义放在“.c”文件或它自己的文件中,并将声明放在“.h”文件中,则不会出现任何错误。

    函数声明 :告诉编译器如何使用函数