正确使用c语言中的头文件

我们在使用c编程的时候经常会遇到头文件,前段时间我自己做了个小项目的时候,也遇到了关于头文件的问题。

预处理器发现#include 指令后,就会寻找后跟的文件名并把这个文件包含的内容包含到当前文件中。被包含文件的文本将替换源文件中的#include 指令,就像您把被包含文件中的全部内容键入到源文件的特定位置一样(摘抄自 cprimer plus)。简单来说就是,编译器把 #include 后跟随的文件内容都写到源文件中,写的位置就是 #include放的位置。

#include指令有两种形式

1#include<stdio.h>  文件名放在尖括号里面

unix系统中,尖括号告诉预处理器在一个活多个标准的目录中寻找文件。如果做开发,比如,我使用keilmdk,编译器也遵循这样的原则,放在默认目录中,不用人工处理。

2#includemystuff.h 文件名放在双引号中

有两种形式:

<1>:#includehot.h收索当前的工作目录

 <2>:#include/usr/biff/p.h收索/usr/biff所在的目录

对于unix系统,使用双引号意味着先搜索本地目录,但是具体收索那个牡蛎依赖于编译器。有些编译器收索源代码所在的目录,还有些收索工程文件所在的目录。

对于我使用的mdk,我是将文件所在的文件夹添加到工程能够搜索的目录中。

在写c程序的时候,我们经常会把函数写在一个.c文件中,然后在另外的.c文件中引用函数,使得整个程序更加整洁,方便。

但是在头文件使用的时候经常出现重定义的错误,我使用的解决办法是:

首先把hello.c拆分为两个文件hello.chello.hhello.h中包含hello.c所需要的头文件和.c中出现的函数名。例如在hello.c中有

void add int x,int y

{

z=x+y;

return y;

}

就在hello.h中添加 void add(int x,int y);hello.c所需的头文件#include<stdio.h>

在拆分后的hello.c添加#includehello.h,然后把hello.chello.h放在同一个文件夹即可。当有文件需要add函数时直接在头文件中添加#includehello.h即可。

当多个文件引用hello.h时候,例如当plus.c中引用hello.cjump.c需要使用plus.cadd.c。就会出现重定义的错误(引用hello.cplusz指将hello.hplus.h头文件添加到jump.c中)

这时候就引用防重定义。假设要放重引用hello.h  在开头添加

#ifndef __HELLO_H__

#define __HELLO_H__

结尾添加

#endif

既把你要重定义的文件的开头添加

#ifndef __HELLO_H__

#define __HELLO_H__

HELLO就是你文件的名字改成大写 H就是你文件类型

再在结尾加上

#endif

即可。

posted @ 2013-07-05 19:20  notepi  阅读(4308)  评论(0编辑  收藏  举报