-
存放.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只会找几个固定的文件夹,包括编译器设置的目录和工程目录等。
如果你把头文件放在工程目录下的某个子目录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;}