0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言必备知识头文件包含

CHANBAEK 来源:小李的创客实验室 作者: 初出茅庐的小李 2023-12-01 18:20 次阅读

头文件包含

头文件在C语言中是非常重要的组成部分。

  1. 系统级头文件和自定义头文件:
    • 是用于包含系统级头文件,这些头文件通常是C标准库或者其他系统提供的库的头文件,例如 stdio.hstring.hmath.h 等。
    • "xxx.h" 是用于包含自定义头文件,这些头文件通常是你自己或者团队编写的,用于组织和声明你的程序中的函数、变量、宏等。
  2. 预处理阶段的替换:
    在预处理阶段,#include 指令会将指定的头文件内容原样替换到包含它的源文件中。这样,在编译阶段时就可以知道函数的声明,使得调用函数时不会出现未声明的情况。
  3. 一个完整的C代码的组织:
    • xxx.c 源文件包含了函数的定义和调用,实现了具体的功能。
    • xxx.h 头文件包含了对应 xxx.c 中函数的声明,起到了接口的作用,使得其他文件在调用这些函数时能够正确地使用。
  4. 头文件保护(Include Guards): 为了防止头文件被重复包含导致的重定义问题,通常在头文件的开头和结尾加入预处理指令,例如:
#ifndef XXX_H
#define XXX_H

// 内容

#endif // XXX_H

这样可以确保头文件只被包含一次。

  1. 命名规范: 通常头文件的命名使用全小写,可以包含下划线,以反映与源文件的关系。例如,如果有一个源文件 led.c,那么对应的头文件可能是 led.h

整体来说,头文件的正确使用有助于代码的模块化、可维护性和可读性。

单片机中led.c

#include "led.h"//私有库
#include "stdio.h"

//.c写函数的
//无参无返的函数
//函数名:LED_Config //入口地址
//LED1- >PC4 低电平点亮
//LED2- >PC5 低电平点亮
//LED3- >PC6 低电平点亮
//LED4- >PC7 低电平点亮

void LED_Config(void)
{
	#if (REG_CODE)
	
	RCC- >AHB1ENR |= 1< < 2;      //GPIOC的时钟开关

	GPIOC- >MODER &= ~(3< < 2*4);//把89位清00 PC4
	GPIOC- >MODER |=  (1< < 2*4);//只是把第89位置01
	
	GPIOC- >MODER &= ~(3< < 2*5);//把10 11位清00 PC5
	GPIOC- >MODER |=  (1< < 2*5);//只是把第89位置01
	
	GPIOC- >MODER &= ~(3< < 2*6);//把11 12位清00 PC6
	GPIOC- >MODER |=  (1< < 2*6);//只是把第89位置01
	
	GPIOC- >MODER &= ~(3< < 2*7);//把89位清00  PC7
	GPIOC- >MODER |=  (1< < 2*7);//只是把第89位置01
	
	GPIOC- >OTYPER &= ~(1< < 4); //推挽模式//0xFFFF FFEF 
	GPIOC- >OTYPER &= ~(1< < 5);
	GPIOC- >OTYPER &= ~(1< < 6);
	GPIOC- >OTYPER &= ~(1< < 7);
	
	
	//假设输出状态 灯的开关
	GPIOC- >ODR |=  (1< < 4)| (1< < 5)|(1< < 6) |(1< < 7);  //默认全关
	printf("寄存器代码...rn");
	#else
	printf("LED库函数代码...rn");
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
	
        GPIO_InitTypeDef  GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Mode   = GPIO_Mode_OUT;
	GPIO_InitStruct.GPIO_OType  = GPIO_OType_PP;
	GPIO_InitStruct.GPIO_Pin    = GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
	GPIO_InitStruct.GPIO_PuPd   = GPIO_PuPd_NOPULL;
	GPIO_InitStruct.GPIO_Speed  = GPIO_High_Speed;
	
	GPIO_Init(GPIOB,&GPIO_InitStruct);
	
	
	#endif
	
}

//开灯代码
void LED1_On(void)
{
	GPIOC- >ODR &= ~(1< < 4);
}
//关灯代码
void LED1_Off(void)
{
	GPIOC- >ODR |= (1< < 4);
}
//闪灯代码
void LED1_Tog(void)
{
	GPIOC- >ODR ^= (1< < 4);
}

单片机中led.h

#ifndef _LED_H_
#define _LED_H_

//.h 声明函数
#include "stm32f4xx.h"//公共的库

//函数指针:指向函数的指针变量 变量被赋的值就是LED_Config
void LED_Config(void);//
void LED1_On(void);
void LED1_Off(void);
void LED1_Tog(void);

#endif

至此,头文件包含相关内容就介绍完了

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7597

    浏览量

    136117
  • 函数
    +关注

    关注

    3

    文章

    4303

    浏览量

    62409
  • C代码
    +关注

    关注

    1

    文章

    89

    浏览量

    14285
  • 头文件
    +关注

    关注

    0

    文章

    25

    浏览量

    9846
  • 源文件
    +关注

    关注

    0

    文章

    30

    浏览量

    4569
收藏 人收藏

    评论

    相关推荐

    【Makefile】C文件包含头文件修改,但不重新编译?

    【Linux + Makefile】Makefile的高阶用法:解决C文件包含头文件修改了,但C文件
    的头像 发表于 09-08 08:53 5237次阅读
    【Makefile】<b class='flag-5'>C</b><b class='flag-5'>文件</b><b class='flag-5'>包含</b>的<b class='flag-5'>头文件</b>修改,但不重新编译?

    你应该搞懂的 C 语言头文件路径问题

    前段时间在写 Linux 专栏的过程中,忽然想到一个问题 :C语言头文件路径,因为在GCC环境下面,可以很直观的了解到程序对头文件的查找位置,但是对于使用集成开发环境 KEIL 或者
    的头像 发表于 06-14 11:41 4736次阅读
    你应该搞懂的 <b class='flag-5'>C</b> <b class='flag-5'>语言</b><b class='flag-5'>头文件</b>路径问题

    发个比较基础的学习文件---C51单片机及C语言知识必备秘籍

    比较基础的学习文件---C51单片机及C语言知识必备秘籍,适合新手哦,{:soso_e100:
    发表于 11-29 12:51

    c51单片机必备c语言知识

    c51单片机必备c语言知识
    发表于 01-05 22:51

    VxWorks BSP框架源代码包含头文件和驱动

    VxWorks BSP框架源代码包含头文件和驱动
    发表于 03-26 15:58 114次下载

    F28035实现双电机控制的程序,包含C文件、关键头文件和CMD

    F28035实现双电机控制的程序,包含C文件、关键头文件和CMD文件
    发表于 11-02 10:57 39次下载

    单片机C语言头文件

    介绍有关于单片机C51编程时候有关头文件的相关知识,自己整理,欢迎指正!
    发表于 12-10 15:56 12次下载

    如何在C++代码中使用C头文件

    如何在C++代码中使用C头文件。从C++调用C头文件之前,C
    发表于 10-19 09:24 3次下载

    C语言中程序员编写的头文件和编译器自带的头文件

    #include 指令会指示 C 预处理器浏览指定的文件作为输入。预处理器的输出包含了已经生成的输出,被引用文件生成的输出以及 #include 指令之后的文本输出。例如,如果您
    的头像 发表于 11-12 14:55 7801次阅读

    C语言头文件是做什么的

    c语言程序代码文件扩展名只能是.c或者.h,换句话说,c语言程序代码只能在扩展名为.
    的头像 发表于 02-13 15:29 9370次阅读

    C语言头文件组织作用与包含原则详解

    说明 本文假定读者已具备基本的C编译知识。 如非特殊说明,文中源文件指 * .c文件头文件
    的头像 发表于 11-12 17:49 2807次阅读

    C语言头文件组织与包含原则

    说明本文假定读者已具备基本的C编译知识。 如非特殊说明,文中“源文件”指 * .c文件,“头文件
    的头像 发表于 11-14 11:31 3485次阅读

    C语言中头文件包含里的那些事

    就是编码格式的规范化处理) 曾以为,一个.c文件对应一个.h文件,.c文件包含它自身的.h
    的头像 发表于 03-25 13:57 2364次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言中头文件</b><b class='flag-5'>包含</b>里的那些事

    C 语言头文件路径位置问题

    前言 前段时间在写 Linux 专栏的过程中,忽然想到一个问题 :C语言头文件路径,因为在GCC环境下面,可以很直观的了解到程序对头文件的查找位置,但是对于使用集成开发环境 KEIL
    的头像 发表于 06-22 10:05 6180次阅读
    <b class='flag-5'>C</b> <b class='flag-5'>语言</b>的<b class='flag-5'>头文件</b>路径位置问题

    C语言编程必备知识合集

    电子发烧友网站提供《C语言编程必备知识合集.zip》资料免费下载
    发表于 11-21 09:34 0次下载
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>编程<b class='flag-5'>必备</b><b class='flag-5'>知识</b>合集