《C语言》头文件的那些事

  • 存放.h(头文件)的位置是不是固定的呢? 为什么我在同一个工程里面 写 #include<xxx.h> 显示说找不到 

解答一:

C语言中的头文件一般分为两类,一类是标准库头文件,一类是用户自定义头文件。

1、标准库头文件,不同的编译器都不相同。

Vc6.0一般在安装目录下的\VC98\INCLUDE目录,比如C:\Program Files (x86)\Microsoft Visual Studio\VC98\INCLUDE。
Vs一般在位于$VSPATH\VC\include路径下面。

gcc一般默认在 /usr/include目录下。

2、用户自定义头文件,存储位置有用户自定义。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

解答二:

你用的是VC++吗?  如果是的话   点开VC  菜单栏中有个tools  点开来选option  有个directories

右边那个combobox选include files  这里就是存放头文件的位置   如果你自己建了一个头文件库放在某个文件夹下    那么你要在程序中加载的话就要在这里新建一个位置   这样就能找到了 

另外 如果是你自己建的头文件xx.h   你就把它放在工程的同一个文件夹里   这样只要#include "xx.h"就可以了

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

  • 在C语言头文件中“”与<>有什么区别?

其实,两者之间是没有多大差别的,只是为了提高查找效率而区分的。
       当你包含一个头文件时,编译时,需要找到那个头文件,使用<>这种方式,编译器查找的时候,会在编译器的安装目录的标准库中开始查找.

        ""这种方式,会在当前的工程所在的文件夹开始寻找,也就是你的源程序所在的文件夹。
有的编译器,要求十分严格,不能混用,有的就可以.

----------------------------------------------------------------------------------------------------------------------------------------------------

  • 关于头文件的引用

c语言中头文件和源文件不在同一文件夹也可以的,引用中加入头文件的绝对路径就可以。

这里在“F:/代码”下新建一个头文件1.h,内容是“int a=10 ”,在其它目录新建cpp文件,如下:

1

2

3

4

5

6

7

8

#include<stdio.h>

#include "F:/代码/1.h"//引用1.h文件

void main()

{

    int b=10;

    printf("a+b=%d\n",a+b);

    return ;

}

include只会找几个固定的文件夹,包括编译器设置的目录和工程目录等。
如果你把头文件放在工程目录下的某个子目录abc中,你可以用#include "./abc/link_lib.h"

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

  • 头文件(*.h文件)原来还可以自己写的。

          新手小白只知道调用系统库函数时,要使用#i nclude语句将某些头文件包含进去。

其实,头文件跟.C文件一样,是可以自己写的。

头文件是一种文本文件,使用文本编辑器将代码编写好之后,以扩展名.h保存就行了。头文件中一般放一些重复使用的代码,例如函数声明,变量声明,常数定义,宏的定义等等。

<>是标准库的头文件,""是非标准库的头文件.

      当使用#include语句将头文件引用时,相当于将头文件中所有内容,复制到#include处。

      为了避免因为重复引用而导致的编译错误,头文件常具有    

 #ifndef  LABEL
   #define   LABEL  
  //代码部分
   #endif

的格式。其中,LABEL为一个唯一的标号,命名规则跟变量的命名规则一样。

        常根据它所在的头文件名来命名,例如,如果头文件的文件名叫做hardware.h,那么可以这样使用:

#ifndef   __HARDWARE_H__#define   __HARDWARE_H__  //代码部分#endif这样写的意思就是,如果没有定义__HARDWARE_H__,则定义__HARDWARE_H__,并编译下面的代码部分,直到遇到#endif。

      这样,当重复引用时,由于__HARDWARE_H__已经被定义,则下面的代码部分就不会被编译了,这样就避免了重复定义。

      另外一个地方就是使用include时,使用引号与尖括号的意思是不一样的。

      使用引号(“”)时,首先搜索工程文件所在目录,然后再搜索编译器头文件所在目录。而使用尖括号(<>)时,刚好是相反的搜索顺序。

      假设我们有两个文件名一样的头文件hardware.h,但内容却是不一样的。

       一个保存在编译器指定的头文件目录下,我们把它叫做文件I;

       另一个则保存在当前工程的目录下,我们把它叫做文件II。

      如果我们使用的是#include <hardware.h>,则我们引用到的是文件I。

      如果我们使用的是#include “hardware.h”,则我们引用的将是文件II。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

头文件怎么写?

把所有函数的函数声明放进去就行了,把函数的定义放在一个cpp文件中。比如:
test.h的内容:
void foo();
test.cpp的内容:
void foo(){return;}
main.cpp的内容:
#include "test.h"
int main(){foo(); return 0;}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值