頭文件包含
頭文件在C語言中是非常重要的組成部分。
- 系統(tǒng)級頭文件和自定義頭文件:
是用于包含系統(tǒng)級頭文件,這些頭文件通常是C標(biāo)準(zhǔn)庫或者其他系統(tǒng)提供的庫的頭文件,例如stdio.h
、string.h
、math.h
等。"xxx.h"
是用于包含自定義頭文件,這些頭文件通常是你自己或者團(tuán)隊(duì)編寫的,用于組織和聲明你的程序中的函數(shù)、變量、宏等。
- 預(yù)處理階段的替換:
在預(yù)處理階段,#include
指令會將指定的頭文件內(nèi)容原樣替換到包含它的源文件中。這樣,在編譯階段時就可以知道函數(shù)的聲明,使得調(diào)用函數(shù)時不會出現(xiàn)未聲明的情況。 - 一個完整的C代碼的組織:
xxx.c
源文件包含了函數(shù)的定義和調(diào)用,實(shí)現(xiàn)了具體的功能。xxx.h
頭文件包含了對應(yīng)xxx.c
中函數(shù)的聲明,起到了接口的作用,使得其他文件在調(diào)用這些函數(shù)時能夠正確地使用。
- 頭文件保護(hù)(Include Guards): 為了防止頭文件被重復(fù)包含導(dǎo)致的重定義問題,通常在頭文件的開頭和結(jié)尾加入預(yù)處理指令,例如:
#ifndef XXX_H
#define XXX_H
// 內(nèi)容
#endif // XXX_H
這樣可以確保頭文件只被包含一次。
- 命名規(guī)范: 通常頭文件的命名使用全小寫,可以包含下劃線,以反映與源文件的關(guān)系。例如,如果有一個源文件
led.c
,那么對應(yīng)的頭文件可能是led.h
。
整體來說,頭文件的正確使用有助于代碼的模塊化、可維護(hù)性和可讀性。
單片機(jī)中l(wèi)ed.c
#include "led.h"//私有庫
#include "stdio.h"
//.c寫函數(shù)的
//無參無返的函數(shù)
//函數(shù)名:LED_Config //入口地址
//LED1- >PC4 低電平點(diǎn)亮
//LED2- >PC5 低電平點(diǎn)亮
//LED3- >PC6 低電平點(diǎn)亮
//LED4- >PC7 低電平點(diǎn)亮
void LED_Config(void)
{
#if (REG_CODE)
RCC- >AHB1ENR |= 1< 2; //GPIOC的時鐘開關(guān)
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);
//假設(shè)輸出狀態(tài) 燈的開關(guān)
GPIOC- >ODR |= (1< 4)| (1< 5)|(1< 6) |(1< 7); //默認(rèn)全關(guān)
printf("寄存器代碼...rn");
#else
printf("LED庫函數(shù)代碼...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);
}
//關(guān)燈代碼
void LED1_Off(void)
{
GPIOC- >ODR |= (1< 4);
}
//閃燈代碼
void LED1_Tog(void)
{
GPIOC- >ODR ^= (1< 4);
}
單片機(jī)中l(wèi)ed.h
#ifndef _LED_H_
#define _LED_H_
//.h 聲明函數(shù)
#include "stm32f4xx.h"//公共的庫
//函數(shù)指針:指向函數(shù)的指針變量 變量被賦的值就是LED_Config
void LED_Config(void);//
void LED1_On(void);
void LED1_Off(void);
void LED1_Tog(void);
#endif
至此,頭文件包含相關(guān)內(nèi)容就介紹完了
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報(bào)投訴
-
C語言
+關(guān)注
關(guān)注
180文章
7623瀏覽量
139374 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4361瀏覽量
63581 -
C代碼
+關(guān)注
關(guān)注
1文章
90瀏覽量
14578 -
頭文件
+關(guān)注
關(guān)注
0文章
26瀏覽量
9979 -
源文件
+關(guān)注
關(guān)注
0文章
30瀏覽量
4700
發(fā)布評論請先 登錄
相關(guān)推薦
你應(yīng)該搞懂的 C 語言頭文件路徑問題
前段時間在寫 Linux 專欄的過程中,忽然想到一個問題 :C語言的頭文件路徑,因?yàn)樵贕CC環(huán)境下面,可以很直觀的了解到程序?qū)?b class='flag-5'>頭文件的查找位置,但是對于使用集成開發(fā)環(huán)境 KEIL 或者

F28035實(shí)現(xiàn)雙電機(jī)控制的程序,包含C文件、關(guān)鍵頭文件和CMD
F28035實(shí)現(xiàn)雙電機(jī)控制的程序,包含C文件、關(guān)鍵頭文件和CMD文件
發(fā)表于 11-02 10:57
?40次下載
C語言中程序員編寫的頭文件和編譯器自帶的頭文件
#include 指令會指示 C 預(yù)處理器瀏覽指定的文件作為輸入。預(yù)處理器的輸出包含了已經(jīng)生成的輸出,被引用文件生成的輸出以及 #include 指令之后的文本輸出。例如,如果您
C 語言的頭文件路徑位置問題
前言 前段時間在寫 Linux 專欄的過程中,忽然想到一個問題 :C語言的頭文件路徑,因?yàn)樵贕CC環(huán)境下面,可以很直觀的了解到程序?qū)?b class='flag-5'>頭文件的查找位置,但是對于使用集成開發(fā)環(huán)境 KEIL

C語言中的頭文件能不能重復(fù)包含
C語言中的頭文件能不能重復(fù)包含? 比如代碼寫成這樣,stdio.h 連續(xù)包含了兩次。 #include #include int main(
評論