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

c++如何在主函數(shù)文件中調(diào)用其他函數(shù)文件

 更新時(shí)間:2023年08月02日 10:07:45   作者:Dust_Evc  
這篇文章主要介紹了c++如何在主函數(shù)文件中調(diào)用其他函數(shù)文件問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

c++在主函數(shù)文件中調(diào)用其他函數(shù)文件

方法介紹

可以把多個(gè)需要調(diào)用的子函數(shù)聲明在一個(gè)頭文件中。

具體是:

1. 函數(shù)的定義寫在源文件(A.cpp)

2. 把函數(shù)的聲明寫在頭文件(B.h)里(不必與源文件同名)

3. 在源文件(A.cpp)以及要使用這些函數(shù)的源文件中加入 #include  "B.h"

例如:

如果子函數(shù)引用了string,可以直接在頭文件中加上:

#include <string>
using namespace std;

這樣就不必在主文件中引用這些頭文件。

如果在頭文件中聲明和定義函數(shù),有兩種方法:

1、直接在頭文件中聲明和定義這些子函數(shù),然后在其它文件中引用頭文件,編譯時(shí),需要加上相應(yīng)頭文件;

2、在頭文件中聲明這些子函數(shù),然后在子函數(shù)的cpp文件中,寫這些子函數(shù)的定義,同時(shí)引用該頭文件,使用子函數(shù),只需在相應(yīng)的cpp文件中引用相應(yīng)頭文件即可,編譯時(shí)需要加上相應(yīng)頭文件和cpp文件;

注意事項(xiàng):

1、如果使用頭文件中聲明的子函數(shù),需要在相應(yīng)的引用該頭文件的cpp文件開頭(引用頭文件之后),加上引用外部子函數(shù)的聲明:

extern int func1(int var1, string str1);
extern int func2(int var2, string str2);
......

2、為了防止頭文件重復(fù)調(diào)用出錯(cuò),需要在頭文件開頭和結(jié)束的地方加上防止重復(fù)調(diào)用的條件編譯開關(guān):

#ifndef XXX_H
#define XXX_H
......
#endif

示例1

文件fu.cpp

#include "Funs.h" 
/*求兩個(gè)數(shù)的最大值函數(shù)*/
int max(int a, int b) 
{
	return a > b ? a : b;
}

文件Funs.h

#pragma once
#ifndef FUNS_H
#define FUNS_H
/*求兩個(gè)數(shù)的最大值函數(shù)*/
int max(int, int);
#endif

文件main.cpp

#include <stdio.h>
#include "Funs.h"  
int main() 
{
	int a = 12, b = 9;
	int c = max(a, 9);
	printf("%d和%d中的最大值為:%d\n", a, b, c);
	return 0;
}

示例2

寫個(gè)頭文件(a.h),對調(diào)用文件(fun.cpp)里的函數(shù)進(jìn)行申明。

再將頭文件引在主函數(shù)所在的文件(main.cpp)里。

如下面所示:

文件fun.cpp

#include "Funs.h" 
int display(int a,int b)
{
    cout<<a+b<<endl;
    return 0;
}

文件a.h

#pragma once
#ifndef A_H
#define A_H
#include <iostream>
int display(int ,int );
#endif

文件main.cpp

#include "a.h"
int main()
{
    int a=2,b=3;
    display(a,b);
    return 0;
}

簡單寫幾行,使用非本源文件的函數(shù)就需要文件包含方式來包含其他文件,注意好頭文件別重復(fù)

示例3

鏈接:http://www.fzitv.net/article/276187.htm

理解函數(shù)調(diào)用的過程

程序在內(nèi)存中的占用

要學(xué)習(xí)C語言中函數(shù)調(diào)用的過程,必須要知道程序在內(nèi)存中各個(gè)區(qū)域的分布。

C語言的函數(shù)調(diào)用的過程主要分布在棧中,所以我們今天主要研究棧。

幾個(gè)基本的匯編指令

call:

  • 將當(dāng)前指令的下一條指令的地址保存到棧中。
  • 跳轉(zhuǎn)至目標(biāo)函數(shù)的地址。

ret :

  • 彈出棧頂?shù)刂穼?shù)據(jù)放入eip
  • 從棧頂入棧稱為push
  • 從棧底出棧稱為pop

常用寄存器

在CPU中:讀取指令(內(nèi)存-->CPU)-->分析指令(CPU)-->執(zhí)行指令(CPU)

1.  EAX:累積暫存器,EBX:基底暫存器,ECX:計(jì)數(shù)暫存器,EDX:資料暫存器

2. EIP(pc):程序計(jì)數(shù)器(用來存放當(dāng)前正在執(zhí)行指令的下一條指令的地址)

3. ESP:棧頂

4. EBP:棧底

函數(shù)的調(diào)用與棧幀的創(chuàng)建銷毀

實(shí)例函數(shù):

轉(zhuǎn)換成匯編語言:

首先由_tmainCRTStartup調(diào)用main函數(shù),并在棧中創(chuàng)建了一個(gè)棧幀。

分別把a(bǔ)和b的值壓入棧中:

創(chuàng)建b,a臨時(shí)變量壓棧。

call指令保存當(dāng)前指令下一條計(jì)數(shù)器的值,并跳轉(zhuǎn)到指定地址。

創(chuàng)建新的棧幀myadd

定義z,并計(jì)算a+b,并返回z的值到main中

將a+b的值賦給c。

到這里函數(shù)的調(diào)用就結(jié)束了。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++控制臺實(shí)現(xiàn)簡單人機(jī)對弈井字棋

    C++控制臺實(shí)現(xiàn)簡單人機(jī)對弈井字棋

    這篇文章主要為大家詳細(xì)介紹了C++控制臺實(shí)現(xiàn)簡單人機(jī)對弈井字棋,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C語言 數(shù)據(jù)結(jié)構(gòu)中求解迷宮問題實(shí)現(xiàn)方法

    C語言 數(shù)據(jù)結(jié)構(gòu)中求解迷宮問題實(shí)現(xiàn)方法

    這篇文章主要介紹了C語言 數(shù)據(jù)結(jié)構(gòu)中求解迷宮問題實(shí)現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • C++利用inotify+epoll實(shí)現(xiàn)異步文件監(jiān)控的方法

    C++利用inotify+epoll實(shí)現(xiàn)異步文件監(jiān)控的方法

    這篇文章講給大家詳細(xì)介紹一下C++利用inotify+epoll實(shí)現(xiàn)異步文件監(jiān)控的方法,inotify是一種異步文件監(jiān)控機(jī)制,文章通過代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-08-08
  • C++算術(shù)運(yùn)算符與類型轉(zhuǎn)換

    C++算術(shù)運(yùn)算符與類型轉(zhuǎn)換

    這篇文章主要介紹了C++算術(shù)運(yùn)算符與類型轉(zhuǎn)換,C++當(dāng)中提供5種基礎(chǔ)的算術(shù)運(yùn)算符,分別是加法、減法、乘法、除法和取模。下main我們就一起來看看下面文章得具體舉例與說明,需要的朋友可以參考一下,希望對你有所幫助
    2021-11-11
  • 詳解C/C++如何獲取路徑下所有文件及其子目錄的文件名

    詳解C/C++如何獲取路徑下所有文件及其子目錄的文件名

    這篇文章主要為大家詳細(xì)介紹了在C/C++中如何獲取路徑下所有文件及其子目錄的文件名,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • C語言表達(dá)式求值中類型轉(zhuǎn)換和優(yōu)先級等問題詳解

    C語言表達(dá)式求值中類型轉(zhuǎn)換和優(yōu)先級等問題詳解

    表達(dá)式求值是一個(gè)常見的問題,可以用C語言實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于C語言表達(dá)式求值中類型轉(zhuǎn)換和優(yōu)先級等問題的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • QT Creator配置Kit的實(shí)現(xiàn)示例

    QT Creator配置Kit的實(shí)現(xiàn)示例

    本文主要介紹了使用Qt5.12.12與VS2022時(shí),因MSVC編譯器版本不匹配及Windows SDK缺失導(dǎo)致配置錯(cuò)誤的問題解決,感興趣的可以了解一下
    2025-07-07
  • OpenCV3實(shí)現(xiàn)車牌識別(C++版)

    OpenCV3實(shí)現(xiàn)車牌識別(C++版)

    這篇文章主要為大家詳細(xì)介紹了OpenCV3實(shí)現(xiàn)車牌識別功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++11模板元編程-std::enable_if示例詳解

    C++11模板元編程-std::enable_if示例詳解

    這篇文章主要給大家介紹了關(guān)于C++11模板元編程-std::enable_if的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • C++標(biāo)準(zhǔn)模板庫vector的常用操作

    C++標(biāo)準(zhǔn)模板庫vector的常用操作

    今天小編就為大家分享一篇關(guān)于C++標(biāo)準(zhǔn)模板庫vector的常用操作,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12

最新評論

东阿县| 台安县| 新沂市| 南溪县| 陕西省| 胶南市| 玉林市| 和龙市| 五常市| 绥棱县| 太湖县| 东海县| 广德县| 辉南县| 金湖县| 锡林浩特市| 淮安市| 凌海市| 南投县| 剑川县| 邯郸市| 工布江达县| 招远市| 仙居县| 漾濞| 弥渡县| 方城县| 西畴县| 西峡县| 四子王旗| 阿瓦提县| 黄石市| 松滋市| 乳源| 黔西| 麻城市| 清新县| 新化县| 榆树市| 扬中市| 城口县|