最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言多文件編程問題解析

 更新時間:2022年12月27日 08:58:53   作者:編程遠泊  
在某些場景中,考慮到編譯效率和可移植性,#pragma once 和 #ifndef 經(jīng)常被結(jié)合使用來避免頭文件被 重復(fù)引入,這里介紹用 _Pragma 操作符避免頭文件重復(fù)引入的問題,感興趣的朋友跟隨小編一起看看吧

1 為什么要使用多文件編程

在大型的綜合項目中,是由很多具有不同的功能的代碼構(gòu)成,不可能將所有的代碼都寫到一個文件中,

而是采用多文件的方式對代碼進行管理,將具有不同功能的代碼寫到不同的文件中。 比如:led燈的驅(qū)動代碼寫到led.c文件,beep驅(qū)動的代碼寫到beep.c中,key驅(qū)動代碼寫到key.c中…

2 多文件編程的使用方法

源文件:指.c文件,主要存放的是頭文件的包含,變量定義,函數(shù)的定義

頭文件:指.h文件,主要存放的是宏定義,函數(shù)的聲明,已經(jīng)其他頭文件的包含

防止頭文件的重復(fù)包含的機制:

#ifndef 頭文件名大寫_H

#define 頭文件名大寫_H

頭文件中書寫的宏定義及函數(shù)的聲明;

#endif

當(dāng)頭文件第一次被包含時,判斷"頭文件名大寫_H"宏定義是否被定義,

如果沒有定義,則頭文件中的代碼會被展開,并且定義"頭文件名大寫_H"宏定義。

當(dāng)頭文件第二次被包含時,判斷"頭文件名大寫_H"宏定義是否被定義,

由于"頭文件名大寫_H"宏已經(jīng)被定義,則頭文件中的代碼將不會被展開。

在書寫自己的頭文件時,首先手寫頭文件的重復(fù)包含的機制。

重復(fù)包含機制中的宏定義的名字可以書寫其他的名字,但是"頭文件名大寫_H"已經(jīng)成為一種約定俗稱的用法。

3 多文件編程的練習(xí)

將C基礎(chǔ)中的冒泡排序的代碼使用多文件編程的方式實現(xiàn):

冒泡排序的代碼封裝成函數(shù),寫到bubbling.c文件中, 函數(shù)的聲明寫到bubbling.h文件中, 在main.c文件中調(diào)用冒泡排序的函數(shù)。

bubbling.h文件:

#ifndef __BUBBLING_H__
#define __BUBBLING_H__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void bubbling(int *s,int len);
void print(int *s);
#endif

bubbling.c文件:

#include "bubbling.h"
void bubbling(int *s,int len)
{
    for(int j = 0; j < len-1; j++){
		//內(nèi)層循環(huán)控制一趟排序
		for(int i = 0; i < len-1-j; i++){
					//此處的 -1 是防止越界訪問的
					//此處的 -j 是因為每趟都可以少比較一個元素
			if(s[i] > s[i+1]){//如果是降序 只需要將此處的 > 改成 < 即可
				//交換
				int temp = s[i];
				s[i] = s[i+1];
				s[i+1] = temp;
			}
		}
	}
    return 0;
}

print.c文件

#include "bubbling.h"
void print(int *s){
    //排序前
	int i = 0;
	int j = 0;
	for(i = 0 ; i < 10; i++){
		printf("%d  ", s[i]);
	}
	printf("\n");
}

main.c文件

#include "bubbling.h"
int main(int argc, const char *argv[])
{
    /*your code*/
    int s[10] = {11, 22, 43, 567, 1, 4, 9, 8, 55, 98};
	int len = sizeof(s)/sizeof(s[0]);//數(shù)組的長度:元素的個數(shù)
	int temp = 0;
    print(s);
    bubbling(s,10);
    print(s);
    return 0;
}

到此這篇關(guān)于C語言多文件編程問題解析的文章就介紹到這了,更多相關(guān)C語言多文件編程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c語言算術(shù)運算符越界問題解決方案

    c語言算術(shù)運算符越界問題解決方案

    大量的安全漏洞是由于計算機算術(shù)運算的微妙細節(jié)引起的, 具體的C語言, 諸如符號數(shù)和無符號數(shù)之間轉(zhuǎn)換, 算術(shù)運算的越界都會導(dǎo)致不可預(yù)知的錯誤和安全漏洞, 具體的案例數(shù)不勝數(shù).
    2012-11-11
  • C++模擬實現(xiàn)STL容器vector的示例代碼

    C++模擬實現(xiàn)STL容器vector的示例代碼

    這篇文章主要為大家詳細介紹了C++如何模擬實現(xiàn)STL容器vector的相關(guān)資料,文中的示例代碼講解詳細,對我們學(xué)習(xí)C++有一定幫助,需要的可以參考一下
    2022-11-11
  • C++中register關(guān)鍵字舉例詳解

    C++中register關(guān)鍵字舉例詳解

    register用來聲明變量,然后聲明出來的變量是直接放在cpu的寄存器當(dāng)中,而非就是通過內(nèi)存尋址訪問,這樣效率更高,下面這篇文章主要給大家介紹了關(guān)于C++中register關(guān)鍵字的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • visual?studio?2022一個不易發(fā)現(xiàn)的問題

    visual?studio?2022一個不易發(fā)現(xiàn)的問題

    本文主要介紹了visual?studio?2022一個不易發(fā)現(xiàn)的問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • C語言結(jié)構(gòu)體指針案例解析

    C語言結(jié)構(gòu)體指針案例解析

    這篇文章主要介紹了C語言結(jié)構(gòu)體指針案例解析,本文通過例子來解釋說明了C語言的結(jié)構(gòu)體概念和如何用指針去操作結(jié)構(gòu)體,文章標(biāo)明了詳細的代碼,需要的朋友可以參考下
    2021-07-07
  • C語言由淺入深講解線程的定義

    C語言由淺入深講解線程的定義

    這篇文章主要介紹了C語言中線程的基礎(chǔ)知識,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C++使用VLD檢測內(nèi)存泄漏

    C++使用VLD檢測內(nèi)存泄漏

    本文主要介紹了C++使用VLD檢測內(nèi)存泄漏,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • C++中volatile限定符的實現(xiàn)示例

    C++中volatile限定符的實現(xiàn)示例

    volatile關(guān)鍵字在C和C++中用于確保編譯器不優(yōu)化特定變量的訪問,主要用于多線程和硬件交互場景,本文就來介紹C++中volatile限定符的實現(xiàn)示例,感興趣的可以了解一下
    2024-11-11
  • 深入理解C++移位運算符

    深入理解C++移位運算符

    下面小編就為大家?guī)硪黄钊肜斫釩++移位運算符。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • C語言光標(biāo)旋轉(zhuǎn)與倒計時功能實現(xiàn)示例詳解

    C語言光標(biāo)旋轉(zhuǎn)與倒計時功能實現(xiàn)示例詳解

    這篇文章主要為大家介紹了C語言實現(xiàn)光標(biāo)旋轉(zhuǎn)與倒計時功能的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2021-11-11

最新評論

鄱阳县| 林甸县| 政和县| 梁山县| 安乡县| 浙江省| 越西县| 当雄县| 山阳县| 泰安市| 凤阳县| 台北市| 合川市| 白山市| 仁布县| 韶山市| 阜城县| 新田县| 徐汇区| 麻江县| 淳安县| 凤山县| 互助| 义马市| 临潭县| 绥滨县| 宣恩县| 邯郸市| 海林市| 故城县| 新平| 太仓市| 彰化市| 高淳县| 石河子市| 肥西县| 安新县| 南汇区| 正定县| 静乐县| 洞口县|