欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言多文件編程問(wèn)題解析

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

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

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

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

2 多文件編程的使用方法

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

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

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

#ifndef 頭文件名大寫_H

#define 頭文件名大寫_H

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

#endif

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

如果沒(méi)有定義,則頭文件中的代碼會(huì)被展開(kāi),并且定義"頭文件名大寫_H"宏定義。

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

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

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

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

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

將C基礎(chǔ)中的冒泡排序的代碼使用多文件編程的方式實(shí)現(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 是防止越界訪問(wèn)的
					//此處的 -j 是因?yàn)槊刻硕伎梢陨俦容^一個(gè)元素
			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ù)組的長(zhǎng)度:元素的個(gè)數(shù)
	int temp = 0;
    print(s);
    bubbling(s,10);
    print(s);
    return 0;
}

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

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)自定義掃雷游戲(遞歸版)

    C語(yǔ)言實(shí)現(xiàn)自定義掃雷游戲(遞歸版)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)自定義掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)與算法之單鏈表

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)與算法之單鏈表

    單鏈表是一種鏈?zhǔn)酱嫒〉臄?shù)據(jù)結(jié)構(gòu),用一組地址任意的存儲(chǔ)單元存放線性表中的數(shù)據(jù)元素。本文將為大家介紹C語(yǔ)言中單鏈表的基本概念與讀取數(shù)據(jù)元素,需要的可以參考一下
    2021-12-12
  • 詳解C語(yǔ)言面向?qū)ο缶幊讨械姆庋b

    詳解C語(yǔ)言面向?qū)ο缶幊讨械姆庋b

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言面向?qū)ο缶幊讨械姆庋b,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • opencv實(shí)現(xiàn)輪廓高斯濾波平滑

    opencv實(shí)現(xiàn)輪廓高斯濾波平滑

    這篇文章主要為大家詳細(xì)介紹了opencv實(shí)現(xiàn)輪廓高斯濾波平滑,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C語(yǔ)言實(shí)現(xiàn)單詞小助手改進(jìn)版

    C語(yǔ)言實(shí)現(xiàn)單詞小助手改進(jìn)版

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)單詞小助手的改進(jìn)版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C++生成隨機(jī)浮點(diǎn)數(shù)的示例代碼

    C++生成隨機(jī)浮點(diǎn)數(shù)的示例代碼

    在C++11之前,我們通常采用rand函數(shù)來(lái)生成隨機(jī)數(shù),但rand函數(shù)對(duì)一些情況顯得難以處理。本文將介紹如何利用C++生成隨機(jī)浮點(diǎn)數(shù),需要的可以參考一下
    2022-04-04
  • C語(yǔ)言實(shí)現(xiàn)財(cái)務(wù)管理系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)財(cái)務(wù)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)財(cái)務(wù)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C++字符數(shù)組的輸入輸出和字符串結(jié)束標(biāo)志使用講解

    C++字符數(shù)組的輸入輸出和字符串結(jié)束標(biāo)志使用講解

    這篇文章主要介紹了C++字符數(shù)組的輸入輸出和符串結(jié)束標(biāo)志使用講解,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • boost.asio框架系列之調(diào)度器io_service

    boost.asio框架系列之調(diào)度器io_service

    這篇文章介紹了boost.asio框架系列之調(diào)度器io_service,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • C語(yǔ)言目標(biāo)文件的詳細(xì)講解

    C語(yǔ)言目標(biāo)文件的詳細(xì)講解

    最近正在閱讀關(guān)于C語(yǔ)言的庫(kù),但是我還沒(méi)有find關(guān)于目標(biāo)文件的解釋,這篇文章主要給大家介紹了C語(yǔ)言目標(biāo)文件的詳細(xì)講解,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01

最新評(píng)論