精华内容
下载资源
问答
  • C语言头文件编写(多文件编程)
    更多相关内容
  • c语言头文件编写方法

    2014-09-23 20:11:56
    编写C程序的时候,如果功能比较多,一般都会使用模块化编写方法,使程序更加容易阅读。 使用模块化程序的话,少不了头文件。 附件是详细介绍头文件的写法。 文件加上我的一点实践后得出的经验。 对于新手,非常...
  • c语言头文件编写

    千次阅读 多人点赞 2019-07-12 14:18:37
    使用头文件的作用:当前.c文件要使用其它.c文件已定义的全局函数/全局变量时,对使用的全局函数/全局变量进行声明。 头文件里一般存在的内容: 文件包含:文件包含语句的功能是把指定的文件插入该语句行位置,从而...

    使用头文件的作用:当前.c文件要使用其它.c文件已定义的全局函数/全局变量时,对使用的全局函数/全局变量进行声明。

    1. 文件包含:文件包含语句的功能是把指定的文件插入该语句行位置,从而把指定的文件和当前的源程序文件连成一个源文件。
      文件包含有两种方式:双括号包含尖括号包含。但是这两种方式是有区别的:
      a.使用尖括号表示在系统头文件目录中去寻找(比如#define <stdio.h>,在linux中会去/usr/include/目录中去寻找头文件,或者用户自己去指定路径,比如#define <sys/types.h>,在64位linux系统中会去/usr/include/x86_64-linux-gnu/sys/目录中去寻找头文件);
      b.使用双括号则表示先在当前源文件目录中去寻找,若找不到才到系统头文件目录中去寻找。
      如果用户知道文件具体位置,可以指明好路径,这样可以减少预处理的时间。
      c.这里需要指明的是:文件包含实际就是将该文件名替换成文件里面的内容,比如:3.txt文件的内容是:hello world in 3.txt然后包含3.txt头文件#include "3.txt"
      预处理之后头文件替换成3.txt文件里面的内容:在这里插入图片描述

    2. 条件编译: 条件编译是指预处理器根据条件编译指令,有条件地选择源程序代码中的一部分代码作为输出,送给编译器进行编译。主要是为了有选择性地执行相应操作,防止宏替换内容(如文件等)的重复包含。
      在这里主要使用
      #ifndef 标识符 程序段 #endif语句,它的功能是,如果标识符未被#define语句定义过,则编译程序段。目的是为了防止在一个源文件多次包含同一个头文件。

    3. 头文件head.h的写法有下面两种形式,一种是在函数前面加上extern类型,一种是不加extern。其实加不加extern都是可以的,看个人使用情况。现在的编译器已经很强大,能识别该函数已经在别的文件定义了。只是加上extern可以直观的说明该函数在别的文件已定义好了。

    4. 函数声明”,是为了把函数名返回值类型以及形参类型个数顺序通知编译系统,以便在调用该函数时,编译系统进行对照检查,包括函数名是否正确、传递参数的类型、个数是否与形参一致。如若出现不对应的情况,编译会有语法错误。

    5. 函数声明可以不写形参名,只写形参的类型。如果函数在调用前,没有对函数进行声明,而且在同一个源文件前面出现了该函数的定义,那么编译器就会记住该函数的参数数量和类型以及函数的返回值类型,即把该函数作为声明,并将函数返回值的类型默认为int型。

    在这里插入图片描述

    展开全文
  • 我们常说,引入编译器自带的头文件(包括标准头文件)用尖括号,引入程序自定义的头文件用双引号,例如: 使用尖括号< >,编译器会到系统路径下查找头文件;而使用双引号" ",编译器首先在当前目录下查找...

    我们常说,引入编译器自带的头文件(包括标准头文件)用尖括号,引入程序自定义的头文件用双引号,例如:

    使用尖括号< >,编译器会到系统路径下查找头文件;而使用双引号" ",编译器首先在当前目录下查找头文件,如果没有找到,再到系统路径下查找。也就是说,使用双引号比使用尖括号多了一个查找路径,它的功能更为强大,我们完全可以使用双引号来包含标准头文件,例如:

    使用尖括号< >,编译器会到系统路径下查找头文件;而使用双引号" ",编译器首先在当前目录下查找头文件,如果没有找到,再到系统路径下查找。也就是说,使用双引号比使用尖括号多了一个查找路径,它的功能更为强大,我们完全可以使用双引号来包含标准头文件,例如:

    那么,这里所说的“系统路径”和“当前路径”是什么意思呢?

    绝对路径和相对路径

    理论上讲,我们可以将头文件放在磁盘上的任意位置,只要带路径包含进来就可以。以 Windows 为例,在 D 盘下创建一个自定义的文件夹,名字为abc,它里面有一个头文件叫做xyz.h,那么在程序开头使用#include "D:\\abc\xyz.h"就能够引入该头文件。

    现在不妨假设 xyz.h 中有一个宏定义和一个变量:

    我们不鼓励在头文件中定义变量,否则多次引入后会出现重复定义错误,这里仅是一个演示案例,并不规范。

    下面的代码会输出头文件中的宏和变量: 

    运行结果:

    C语言中文网已经 5 岁了!

    绝对路径

    D:\\abc\xyz.h这种从盘符开始、完整地描述文件位置的路径就是绝对路径(Absolute Path)。

    绝对路径从文件系统的“根部”开始查找文件:
    1) 在 Windows 下,根部就是 C、D、E 这样的盘符,例如D:\\a.hE:\images\123.jpgE:/videos/me.mp4D://abc/xyz.h等,分隔符可以是正斜杠/也可以是反斜杠\,盘符后面的斜杠可以有一个也可以有两个。

    2) Linux 没有盘符,根部就是/,例如/home/xxx/abc.h/user/include/module.h等,分隔符只能是正斜杠/,比 Windows 简洁很多。

    为了增强代码的可移植性,引入头文件时请尽量使用正斜杠/

    相对路径

    相对路径(relative path)是从当前目录(文件夹)开始查找文件;当前目录是指需要引入头文件的源文件所在的目录,这也是本文开头提到的“当前路径”

    以 Windows 为例,假设在E:/cDemo/中有源文件 main.c 和头文件 xyz.h,那么在 main.c 中使用#include "./xyz.h"语句就可以引入 xyz.h,其中./表示当前目录,也即E:/cDemo/

    如果将 xyz.h 移动到E:/cDemo/include/(main.c 所在目录的下级目录),那么包含语句就应该修改为#include "./include/xyz.h";对于 main.c 来说,此时的“当前目录”依然是E:/cDemo/

    如果将 xyz.h 移动到E:/(main.c 所在目录的上级目录),那么包含语句就应该修改为#include "./../xyz.h",其中../表示上级目录。./../xyz.h的意思是,在当前目录的上级目录中查找 xyz.h 文件。

    如果将 xyz.h 移动到E:/include目录,那么包含语句就应该修改为#include "./../include/xyz.h"

    需要注意的是,我们可以将./省略,此时默认从当前目录开始查找,例如#include "xyz.h"#include "include/xyz.h"#include "../xyz.h"#include "../include/xyz.h"

    上面介绍的相对路径的写法同样适用于 Linux,请大家亲自测试,这里不再赘述。

    在实际开发中,我们都是将头文件放在当前工程目录下,非常建议大家使用相对路径,这样即使后来改变了工程所在目录,也无需修改包含语句,因为源文件的相对位置没有改变。

    系统路径

    在上节《C语言标准库以及标准头文件》中讲到,Windows 下的C语言标准库由 IDE 自己携带,Linux 下的C语言标准库一般在固定的路径下,总起来说,标准库不在工程目录下,要使用绝对路径才能引入头文件,这样每次切换平台或者 IDE 都要修改包含路径,非常不方便。

    为了让头文件更加具有实践意义,Windows 下的 IDE 都可以为静态库和头文件设置默认目录。以 Visual Studio 为例,在当前工程名处单击鼠标右键,选择“属性”,在弹出的对话框中就可以看到已经设置好的路径,如下图所示:


    这些已经设置好的路径就是本文开头提到的“系统路径”。

    当使用相对路径的方式引入头文件时如果使用< >,那么“相对”的就是系统路径,也就是说,编译器会直接在这些系统路径下查找头文件;如果使用" ",那么首先“相对”的是当前路径,然后“相对”的才是系统路径,也就是说,编译器首先在当前路径下查找头文件,找不到的话才会继续在系统路径下查找。

    而使用绝对路径的方式引入头文件时,< >和" "没有任何区别,因为头文件路径已经写死了(从根部开始查找),不需要“相对”任何路径。

    展开全文
  • C语言头文件编写规则,掌握后可以减少程序的BUG
  • 编写自己的C语言头文件1. 头文件用于声明而不是用于定义当设计头文件时,记住定义和声明的区别是很重要的。定义只可以出现一次,而声明则可以出现多次(2.3.5节)。下列语句是一些定义,所以不应该放在头文件里:...

    编写自己的C语言头文件

    1. 头文件用于声明而不是用于定义

    当设计头文件时,记住定义和声明的区别是很重要的。定义只可以出现一次,而声明则可以出现多次(2.3.5节)。下列语句是一些定义,所以不应该放在头文件里:

    extern int ival = 10; // initializer, so it's a definition

    double fica_rate; // no extern, so it's a definition

    虽然ival声明为extern,但是它有初始化式,代表这条语句是一个定义。类似地,fica_rate的声明虽然没有初始化式,但也是一个定义,因为没有关键字extern。同一个程序中有两个以上文件含有上述任一个定义都会导致多重定义链接错误。

    因为头文件包含在多个源文件中,所以不应该含有变量或函数的定义。

    对于头文件不应该含有定义这一规则,有三个例外。头文件可以定义类、值在编译时就已知道的const对象和inline函数(7.6节介绍inline函数)。这些实体可在多个源文件中定义,只要每个源文件中的定义是相同的。

    在头文件中定义这些实体,是因为编译器需要它们的定义(不只是声明)来产生代码。例如:为了产生能定义或使用类的对象的代码,编译器需要知道组成该类型的数据成员。同样还需要知道能够在这些对象上执行的操作。类定义提供所需要的信息。在头文件中定义const对象则需要更多的解释。

    2. 一些const对象定义在头文件中

    回想一下,const变量(2.4节)默认为定义该变量的文件的局部变量。正如我们现在所看到的,这种默认的原因在于允许const变量定义在头文件中。

    在C++中,有些地方需要放置常量表达式(2.7节)。例如,枚举成员的初始化式必须是常量表达式。在以后的章节中将会看到其他需要常量表达式的例子。

    一般来说,常量表达式是编译器在编译时就能够计算出结果的表达式。当const整型变量通过常量表达式自我初始化时,这个const整型变量就可能是常量表达式。而const变量要成为常量表达式,初始化式必须为编译器可见。为了能够让多个文件使用相同的常量值,const变量和它的初始化式必须是每个文件都可见的。而要使初始化式可见,一般都把这样的const变量定义在头文件中。那样的话,无论该const变量何时使用,编译器都能够看见其初始化式。

    但是,C++中的任何变量都只能定义一次(2.3.5小节)。定义会分配存储空间,而所有对该变量的使用都关联到同一存储空间。因为const对象默认为定义它的文件的局部变量,所以把它们的定义放在头文件中是合法的。

    这种行为有一个很重要的含义:当我们在头文件中定义了const变量后,每个包含该头文件的源文件都有了自己的const变量,其名称和值都一样。

    展开全文
  • 如何编写自己的C语言头文件

    千次阅读 2021-05-21 06:14:26
    一些初学c语言的人,不知道头文件(*.h文件)原来还可以自己写的。只知道调用系统库函数时,要使用#include语句将某些头文件包含进去。其实,头文件跟.c文件一样,是可以自己写的。头文件是一种文本文件,使用文本编辑...
  • 编写C语言头文件

    2020-08-18 09:22:25
    C语言头文件 我们写c语言代码的第一步总是#include … 这就是引入头文件。#include 命令是预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序...
  • 介绍了C语言头文件的使用与写法) L&) K < J Γ 3 δ " - d e d [ e - J <3q# ) ...
  • 自定义C语言头文件书写格式 第一步: 在工程文件中创建一个文件,在该文件下存放C语言源代码 led.c 和它对应的头文件 led.h 第二步: 在头文件led.h 内容开头必须写上: #ifndef __LED_H // 如果之前没有定义过 __...
  • ---恢复内容开始---c语言头文件怎么写?我一直有这样的疑问,但是也一直没去问问到底咋回事;所以今天一定要把它弄明白!其实学会写头文件之后可以为我们省去不少事情,可以避免书写大量的重复代码,还在等什么快来...
  • C语言头文件编写的几个基本规则

    千次阅读 2014-02-26 19:14:06
    1. 注释,版权,作者,重大修订记录等信息 2. 防重入开关,也就是常见的 #ifndef… #define… #endif 3. C++ 编译器自适应开关,也...4. #include ,头文件里应该 include 所有该文件中所使用的其它接口头文件
  • C语言编写头文件

    万次阅读 多人点赞 2019-05-10 23:20:57
    通常我们写C程序时,都会直接使用这样的语句“#include <...2,头文件可以定义很多宏定义,就是一些全局静态变量的定义,在这样的情况下,只要修改头文件的内容,程序 就可以做相应的修改,不用亲自...
  • 头文件包含命令 #include 的效果与直接复制粘贴头文件内容的效果是一样的,预处理器实际上也是这样做的,它会读取头文件的内容,然后输出到 #include 命令所在的位置。 头文件包含是一个递归(循环)的过程,如果被...
  • 点击蓝字关注我吧像单片机编程时经常遇到模块类函数的编写,例如延时函数、数码管显示函数、LCD1602液晶显示函数等,每次都要编写几乎一模一样的代码,这就有点浪费宝贵的时间,而且效率还不高。有时候我们常常想,...
  • C语言头文件编写是其中的重点内容,有很多细节需要注意,有的甚至会让你感觉奇怪。 多文件编程既涉及到了内存,也涉及到了编译原理,市面上的绝大部分资料对此也语焉不详,所以很多初学者对此都非常困惑。 学会...
  • C语言头文件规则.doc

    2021-05-24 06:39:56
    C语言头文件规则.doc下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。2.下载的文档,不会出现我们的网址水印。3、该文档所得收入(下载+内容+预览)...
  • 不过实际开发中很少这样做,一般是将函数和变量的声明放到头文件,再在当前源文件中 #include 进来。如果变量的值是固定的,最好使用宏来代替。下面的例子是改进后的代码。 main.c 源码: module.c 源码: ...
  • 也就是说,在我们写的一些代码比较复杂,比较长,写一些项目的时候,我们可以使用多文件编写,其中就要用到头文件 头文件主要有一下功能 1.所有变量的声明 2.所有函数的声明 3.可以宏定义,定义typedef,struct...
  • /*sun()函数的声明*/ /*end of file3*/ 总结几下几点: (1)对应的.c文件中写变量、函数的定义 (2)对应的.h文件中写变量和函数的声明 (3)如果有数据类型的定义和宏定义,请写在头文件.h中 (4)头文件中一定...
  • C语言头文件是做什么的

    千次阅读 2021-05-18 15:25:58
    c语言程序代码文件扩展名只能是.c或者.h,换句话说,c语言程序代码只能在扩展名为.c或者.h的文件中编写。我们把.h文件称为头文件头文件可以在.c文件中引用,也可以在.h文件中引用。头文件是做什么用的呢?我们来看...
  • 我看了另外一个博主的,关于这个的,写的很不错 http://blog.csdn.net/notbaron/article/details/44602759
  • c语言头文件怎么写?

    万次阅读 多人点赞 2015-03-24 23:20:11
    c语言头文件怎么写? 大致格式: #ifndef __ABC_H__ #define __ABC_H__ //以上是为了防止头文件被多次包含,可以省略,最好有,名字任意,保证唯一即可 //以下是宏定义,可有可无 #...
  • 这是因为C语言一个非常傻的规定:一个函数如果没有声明函数原型,其返回值类型就是int(所谓的implicit declaration)。由于atoi恰好真返回int,所以你即使不包含它的头文件也不报错。至于这个...
  • c语言 编写头文件

    千次阅读 2019-10-08 16:19:27
    这便是我们通常说的头文件头文件通常用作函数声明,变量声明,常数定义,宏的定义等等。 头文件几个好处: 1,头文件可以定义所用的函数列表,方便查阅你可以调用的函数; 2,头文件可以定义很多宏定义,就是一些...
  • Linux编程中C语言头文件位置

    千次阅读 2020-08-07 20:47:02
    Linux下引用的头文件位置 ...
  • C语言自己编写头文件

    万次阅读 多人点赞 2018-04-25 15:47:01
    1.首先编写head.h 1 #ifdef _HEAD_H 2 #define _HEAD_H 3 int add(int,int,int); 4 #endif 2.在同级目录下编写head.c 1 #include "head.h" 2 #include &lt;stdio.h&gt; 3 int add...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,518
精华内容 26,607
关键字:

c语言头文件编写

友情链接: SVDD.zip