精华内容
下载资源
问答
  • 编写自己的C语言头文件
    2021-05-24 09:48:00

    编写自己的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语言头文件

    2020-08-18 09:22:25
    C语言头文件 我们写c语言代码的第一步...那么其实头文件(.h)是可以自己编写的。当遇到了想要重复运用,的代码时,或者想装逼(就当这句我没说)时就可以写一个自己头文件头文件里可以包括函数声明,变量声明,常

    C语言头文件
    我们写c语言代码的第一步总是#include …
    这就是引入头文件。#include 命令是预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。具体可以参见
    C语言#include的用法

    那么其实头文件(.h)是可以自己去编写的。当遇到了想要重复运用,的代码时,或者想装逼(就当这句我没说)时就可以写一个自己的头文件。头文件里可以包括函数声明,变量声明,常数定义,宏的定义等等。

    一般的头文件结构都是

    #ifndef _FLY_H_
    #define _FLY_H_
    	//你的内容……
    #endif
    

    这样写是为了防止重复引用造成编译报错。

    #ifndef _FLY_H_
    #define _FLY_H_
    

    这两句中的_FLY_H_就是一个标号。
    因为我的头文件名字叫fly.h所以就写成_FLY_H_的形式。

    如果你的头文件叫做FRog23333333.h那么就写成

    #ifndef _FROG23333333_H_
    #define _FROG23333333_H_
    

    具体代码的意思就是:如果没有定义_FLY_H_,则定义_FLY_H_,并编译下面的代码部分,直到遇到#endif。这样,当重复引用时,由于_FLY_H_已经被定义,则下面的代码部分就不会被编译了,这样就避免了重复定义。

    另外,#include <…h>和"…h"的意思是不一样的。
    < >表示从系统目录下开始搜索,然后再搜索PATH环境变量所列出的目录,不搜索当前目录,

    " "则是表示从当前目录开始搜索,然后是系统目录和PATH环境变量所列出的目录。

    所以我们自己写的头文件要用" "括起来,不然编译器会找不到头文件而报错。

    现在我们就来做一个实例。
    创建一个叫hehe.h的头文件,包含两个函数,函数hehe1打印一句“呵呵”,函数hehe2打开10个cmd窗口。(windows环境)。

    首先创建一个hehe.h文件,
    hehe.h

    #ifndef _HEHE_H_
    #define _HEHE_H_
    	#include <stdio.h>//在函数里面引入了头文件,在外面就不用引入了。 
    	#include <windows.h>
    	void hehe1(void){
    		printf("呵呵");
    	}
    	void hehe2(void){
    		int a=0;
    		while(a<10){system("start cmd");
    		a++;}
    	}
    #endif
    

    然后创建OKhehe.c文件
    OKhehe.c

    #include "hehe.h"
    int main()
    {
    	hehe1();
    	hehe2();
    	printf("2333");
    	return 0;
    }
    

    运行一下
    运行效果
    但是会有一个天坑,当你改变了某一个头文件的内容,要重新编译头文件,和所有使用此头文件的程序,假装说你忘了hehe.h里hehe2函数的a++;然后只编译了头文件或代码,然后你点了运行,那么你的电脑将会一直弹弹窗然后卡死。所以一定不要忘了编译。

    参考文章:
    使用Dev C++建立工程文件调用不同文件下的c文件
    如何编写自己的C语言头文件

    作者只是一个刚要上初一的学生党,文章如有错误请指出,不喜勿喷啊。

    谢谢阅读我的博客。。。

    展开全文
  • 编写自己头文件

    2020-01-04 19:25:08
    编写自己的头文件头文件作用如何编写头文件预处理器概述头文件保护符定义自己的头文件 头文件作用 1.为了确保各个文件中类的定义一致,类通常被定义在头文件中,而且类所在头文件的名字与类的名字一样。 2.extern...

    头文件作用

    1.为了确保各个文件中类的定义一致,类通常被定义在头文件中,而且类所在头文件的名字与类的名字一样。
    2.extern变量和函数的声明也会放置在头文件中


    头文件的正确使用能带来的好处:保证所有文件使用给实体的同一声明;当声明需要修改时,只有头文件需要修改。


    如何编写头文件

    预处理器概述

    确保头文件多次包含仍能安全工作的常用技术是预处理器,当预处理器看到#include标记时就会用指定的头文件的内容代替#include。

    头文件保护符

    头文件中常常会用到的一项预处理功能是头文件保护符,它依赖于预处理变量。预处理变量有两种状态:已定义未定义#define指令把一个名字设为预处理变量,另外两个指令则分别检查某个指定的预处理变量是否已经定义:#ifdef当且仅当变量已定义时为真,#ifndef当且仅当变量未定义时为真。一旦检查结果为真,则执行后续操作直至遇到#endif指定为止。
    例如:
    在这里插入图片描述

    定义自己的头文件

    看了前两节你应该就明白了,编写自己的头文件的格式:

    #ifndef [头文件名(大写)]_H
    #define [头文件名(大写)]_H
    [   类、变量或函数的定义代码   ]
    ...
    #endif
    

    当然,可以在头文件中使用#include来包含其他头文件。

    展开全文
  • 其中callback.h是自己编写头文件。 在Linux中编译运行demo.c的时候注意也要编译callback.c文件,否则会报错 → 引用未定义的函数register_alarm和hit_alarm 正确编译和运行的方式如下: gcc demo.c callback.c ...

    有三个文件callback.c,callback.h,demo.c。其中callback.h是自己编写的头文件。

    在Linux中编译运行demo.c的时候注意也要编译callback.c文件,否则会报错 → 引用未定义的函数register_alarm和hit_alarm

    正确编译和运行的方式如下:

    gcc demo.c callback.c -o demo

    ./demo

     

    附:几个文件的代码如下【代码源自实验楼】

    callback.h

    #ifndef __CALLBACK_H__
    #define __CALLBACK_H__
    
    #define MAX_ALARMS 10
    
    typedef int (*alarm)(int type);
    
    alarm alarm_list[MAX_ALARMS];
    
    void register_alarm(alarm a);
    
    int hit_alarm(int index);
    
    #endif // __CALLBACK_H__

    callback.c

    ​#include "callback.h"
    
    int index_total = 0;
    
    void register_alarm(alarm a){
       if ( index_total < MAX_ALARMS )
          alarm_list[index_total++] = a;
    }
    
    int hit_alarm(int index){
       if ( index < 0 || index >= MAX_ALARMS)
          return 1;
       if ( index >= index_total )
          return 1;
       (*alarm_list[index])(index);
       return 0;
    }
    
    ​

    demo.c

    #include <stdio.h>
    #include <stdlib.h>
    #include "callback.h"
    
    int alarm1(int type){
       printf("Alarm1:%d\n", type);
       return 0;
    }
    
    int alarm2(int type){
       printf("Alarm2:%d\n", type);
       return 0;
    }
    
    int alarm3(int type){
       printf("Alarm3:%d\n", type);
       return 0;
    }
    
    int main() {
       register_alarm(alarm1);
       register_alarm(alarm2);
       register_alarm(alarm3);
    
       hit_alarm(0);
       hit_alarm(1);
       hit_alarm(2);
       return 0;
    }
    

     

    展开全文
  • C 语言中程序员编写头文件和编译器自带的头文件 头文件是扩展名为 .h 的文件包含了 C 函数声明和宏定义被多个源文件 中引用共享有两种类型的头文件程序员编写头文件和编译器自带的头文件 在程序中要使用头文件...
  • 如何编写自己的C语言头文件

    万次阅读 多人点赞 2019-05-23 18:36:00
    头文件是一种文本文件,使用文本编辑器将代码编写好之后,以扩展名.h保存就行了。头文件中一般放一些重复使用的代码,例如函数声明,变量声明,常数定义,宏的定义等等。当使用#include语句将头文件引用时,相当于将...
  • 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...
  • 如何编写自己头文件

    千次阅读 2021-03-10 16:25:30
    创建完项目后就可以编写自己的函数和头文件了 1.创建主函数main 在项目位置右键新建即可,并重命名main 2. 写自己头文件,lyq.h lyq.c 头文件自定义要求(模板) #ifndef _LYQ_H_ #define _LYQ_H_ //代码块 #...
  • 自己编写头文件

    千次阅读 2017-07-24 14:23:21
    而在编写头文件时为防止重复定义,我们使用条件编译 下面这段代码意思就是如果没有定义MAX_H那么定义它并编译下面代码部分 头文件写好用.h扩展名保存#ifndef _MAX_H #define _MAX_H int max( int a,int b ) { if...
  • C++自己编写头文件的简单方法

    千次阅读 2020-05-02 11:05:20
    C++自己在项目中写头文件 刚开始创建项目自己头文件时很多人都会因为不会在源代码中
  • 头文件编写

    千次阅读 2021-07-29 18:52:22
    关于头文件编写的介绍和技巧 一、头文件中应该写什么: 问题:头文件可能被任何的源文件包,意味着头文件的内容会在多个目标文件中存在,合并时要保证不能冲突 重点:头文件中只能编写声明语句,不能有定义语句 ...
  • c语言 编写头文件

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

    千次阅读 多人点赞 2019-07-12 14:18:37
    使用头文件的作用:当前.c文件要使用其它.c文件已定义的全局函数/全局变量时,对使用的全局函数/全局变量进行声明。 头文件里一般存在的内容: 文件包含:文件包含语句的功能是把指定的文件插入该语句行位置,从而...
  • 既然已经知道了什么应该放在头文件中,那么我们下一个问题就是真正地编写头文件。我们知道要使用头文件,必须在源文件中#include该头文件。为了编写头文件,我们需要进一步理解  #include  指示是怎样工作的。 #...
  • C语言编写头文件

    万次阅读 多人点赞 2019-05-10 23:20:57
    通常我们写C程序时,都会直接使用这样的语句“#include <...2,头文件可以定义很多宏定义,就是一些全局静态变量的定义,在这样的情况下,只要修改头文件的内容,程序 就可以做相应的修改,不用亲自...
  • c语言头文件编写方法

    2014-09-23 20:11:56
    编写C程序的时候,如果功能比较多,一般都会使用模块化编写方法,使程序更加容易阅读。 使用模块化程序的话,少不了头文件。 附件是详细介绍头文件的写法。 文件加上我的一点实践后得出的经验。 对于新手,非常...
  • 我们常说,引入编译器自带的头文件(包括标准头文件)用尖括号,引入程序自定义的头文件用双引号,例如: 使用尖括号< >,编译器会到系统路径下查找头文件;而使用双引号" ",编译器首先在当前目录下查找...
  • Jni开发(一)编写Jni头文件

    千次阅读 2022-03-22 11:26:11
    Jni开发(一)编写Jni头文件 之前简单的写过一篇文章《Android Studio-Jni开发》,介绍的是如何在AndroidStudio上进行Jni开发,使用CMakeLists进行配置并生成so。本次介绍如何使用Makefile编译C代码生成so,并在...
  • 是的,步入正题:C++如何编写属于自己头文件 什么是头文件? 一般而言,每个C++/C程序通常由头文件和定义文件组成。头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明,而定义文件...
  • 自己动手写头文件

    2020-06-16 17:10:00
    众所周知,C语言的模块化是他的特色,每一个功能一般会单独写成一个函数用来引用,但是,你只能引用在你之前声明创立...一些自创的常用的函数也可放入头文件,构建函数库,类似于stdio.h等头文件 … 话不瞎扯,来看..
  • 点击蓝字关注我吧像单片机编程时经常遇到模块类函数的编写,例如延时函数、数码管显示函数、LCD1602液晶显示函数等,每次都要编写几乎一模一样的代码,这就有点浪费宝贵的时间,而且效率还不高。有时候我们常常想,...
  • C语言编写的矩阵运算头文件,适合C语言初学者参考学习
  • C++中编写自己头文件

    千次阅读 多人点赞 2019-04-01 16:52:40
    自己写的头文件需要用“”引用 标准的头文件要用<>引用 头文件只能写声明,不能写定义!!!,但是可以写const的定义。 头文件主要包括:(和源文件相对应) 1.类的声明(类的定义和声明是一样的) 2....
  • 编写C语言头文件

    千次阅读 2016-07-19 18:32:06
    以前一直不知道怎么在C语言使用自己头文件,最近学了STM32看了例程才了解了大概,在此做个小记录。使用C编译器:Dev-C++因为是弄着玩玩的所以这个IDE足够了,小巧方便 新建项目,保存在目录E:\test ,命名为test....
  • 目录前言第一步、创建一个空项目第二部、创建cpp文件第三步、创建头文件最后、调用头文件 前言 我用的是编译器 visual studio2010编译器。无论是哪个编译器创建头文件的过程都是一样的。 为啥要用写一个头文件? 在...
  • 在项目属性里面添加不管用,直接在VS默认的包含路径里边添加即可。 H:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\VC\Linux\include\usr
  • 编写自己头文件.h

    千次阅读 2012-12-25 14:19:00
    一般类定义都会放在头文件中。头文件一般包含类的定义、extern关键字的声明和函数的声明。   头文件的好处:1. 保证所有文件使用给定实体的同一声明;2. 当声明需要修改时,只要头文件需要更新。 1. 头文件用于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 193,952
精华内容 77,580
关键字:

如何编写自己的头文件