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

簡單講解C++的內(nèi)部和外部函數(shù)以及宏的定義

 更新時間:2015年09月11日 15:46:25   投稿:goldensun  
這篇文章主要介紹了簡單講解C++的內(nèi)部和外部函數(shù)以及宏的定義,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下

C++內(nèi)部函數(shù)和外部函數(shù)
函數(shù)本質(zhì)上是全局的,因為一個函數(shù)要被另外的函數(shù)調(diào)用,但是,也可以指定函數(shù)只能被本文件調(diào)用,而不能被其他文件調(diào)用。根據(jù)函數(shù)能否被其他源文件調(diào)用,將函數(shù)區(qū)分為內(nèi)部函數(shù)和外部函數(shù)。
內(nèi)部函數(shù)

如果一個函數(shù)只能被本文件中其他函數(shù)所調(diào)用,它稱為內(nèi)部函數(shù)。在定義內(nèi)部函數(shù)時,在函數(shù)名和函數(shù)類型的前面加static。函數(shù)首部的一般格式為:

  static 類型標(biāo)識符 函數(shù)名(形參表);



  static int fun(int a, int b);


內(nèi)部函數(shù)又稱靜態(tài)(static)函數(shù)。使用內(nèi)部函數(shù),可以使函數(shù)只局限于所在文件。如果在不同的文件中有同名的內(nèi)部函數(shù),互不干擾。通常把只能由同一文件使用的函數(shù)和外部變量放在一個文件中,在它們前面都冠以static使之局部化,其他文件不能引用。
外部函數(shù)

在定義函數(shù)時,如果在函數(shù)首部的最左端冠以關(guān)鍵字extern,則表示此函數(shù)是外部函數(shù),可供其他文件調(diào)用。如函數(shù)首部可以寫為:

  extern int fun (int a, int b);


這樣,函數(shù)fun就可以為其他文件調(diào)用。如果在定義函數(shù)時省略extern,則默認(rèn)為外部函數(shù)。本教程前面所用的函數(shù)都是外部函數(shù)。

在需要調(diào)用此函數(shù)的文件中,用extern聲明所用的函數(shù)是外部函數(shù)。

【例】輸入兩個整數(shù),要求輸出其中的大者,用外部函數(shù)實現(xiàn)。

/*******file1.cpp(文件1)*******/
#include <iostream>
using namespace std;
int main( )
{
  extern int max(int,int); //聲明在本函數(shù)中將要調(diào)用在其他文件中定義的max函數(shù)
  int a,b;
  cin>>a>>b;
  cout<<max(a,b)<<endl;
  return 0;
}
/*******file2.cpp(文件2)*******/
int max(int x,int y)
{
  int z;
  z=x>y?x:y;
  return z;
}

運行情況如下:

7 -34↙
7

在計算機上運行一個含多文件的程序時,需要建立一個項目文件(project file),在該項目文件中包含程序的各個文件。詳細(xì)情況請查看:VC6.0使用教程。

通過此例可知:使用extern聲明就能夠在一個文件中調(diào)用其他文件中定義的函數(shù),或者說把該函數(shù)的作用域擴(kuò)展到本文件。extern聲明的形式就是在函數(shù)原型基礎(chǔ)上加關(guān)鍵字extern。由于函數(shù)在本質(zhì)上是外部的,在程序中經(jīng)常要調(diào)用其他文件中的外部函數(shù),為方便編程,C++允許在聲明函數(shù)時省寫extern。例4.15程序main函數(shù)中的函數(shù)聲明可寫成:

  int max(int, int);

這就是我們多次用過的函數(shù)原型。由此可以進(jìn)一步理解函數(shù)原型的作用。用函數(shù)原型能夠把函數(shù)的作用域擴(kuò)展到定義該函數(shù)的文件之外(不必使用extern)。只要在使用該函數(shù)的每一個文件中包含該函數(shù)的函數(shù)原型即可。函數(shù)原型通知編譯系統(tǒng):該函數(shù)在本文件中稍后定義,或在另一文件中定義。

利用函數(shù)原型擴(kuò)展函數(shù)作用域最常見的例子是#include命令的應(yīng)用。在#include命令所指定的頭文件中包含有調(diào)用庫函數(shù)時所需的信息。例如,在程序中需要調(diào)用sin函數(shù),但三角函數(shù)并不是由用戶在本文件中定義的,而是存放在數(shù)學(xué)函數(shù)庫中的。按以上的介紹,必須在本文件中寫出sin函數(shù)的原型,否則無法調(diào)用sin函數(shù)。sin函數(shù)的原型是:

  double sin(double x);


本來應(yīng)該由程序設(shè)計者在調(diào)用庫函數(shù)時先從手冊中查出所用的庫函數(shù)的原型,并在程序中一一寫出來,但這顯然是麻煩而困難的。為減少程序設(shè)計者的困難,在頭文件cmath中包括了所有數(shù)學(xué)函數(shù)的原型和其他有關(guān)信息,用戶只需用以下#include命令:

  #include <cmath>


即可。這時,在該文件中就能合法地調(diào)用各數(shù)學(xué)庫函數(shù)了。

C++宏定義#define
可以用#define命令將一個指定的標(biāo)識符(即宏名)來代表一個字符串。定義宏的作用一般是用一個短的名字代表一個長的字符串。它的一般形式為:

  #define 標(biāo)識符 字符串


這就是已經(jīng)介紹過的定義符號常量。如:

  #define PI 3.1415926


還可以用#define命令定義帶參數(shù)的宏定義。其定義的一般形式為:

  #define 宏名(參數(shù)表) 字符串


如:

  #define S(a, b) a*b //定義宏S(矩形面積),a、b為宏的參數(shù)

使用的形式如下:

  area=S(3, 2);


用3、2分別代替宏定義中的形式參數(shù)a和b,即用3*2代替S(3, 2)。因此賦值語句展開為:

  area=3*2;


由于C++增加了內(nèi)置函數(shù)(inline),比用帶參數(shù)的宏定義更方便,因此在C++中基本上已不再用#define命令定義宏了,主要用于條件編譯中。

相關(guān)文章

  • C語言驅(qū)動開發(fā)之內(nèi)核通過PEB獲取進(jìn)程參數(shù)

    C語言驅(qū)動開發(fā)之內(nèi)核通過PEB獲取進(jìn)程參數(shù)

    PEB結(jié)構(gòu)(Process Envirorment Block Structure)其中文名是進(jìn)程環(huán)境塊信息。本文將通過PEB實現(xiàn)獲取進(jìn)程參數(shù),感興趣的小伙伴可以了解一下
    2022-10-10
  • opencv3/C++繪制幾何圖形實例

    opencv3/C++繪制幾何圖形實例

    今天小編就為大家分享一篇opencv3/C++繪制幾何圖形實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • C++ 實戰(zhàn)開發(fā)一個猜單詞的小游戲

    C++ 實戰(zhàn)開發(fā)一個猜單詞的小游戲

    眾所周知紙上得來終覺淺,我們要在實戰(zhàn)中才能真正的掌握技術(shù),小編為大家?guī)硪环萦肅++編寫的猜單詞小游戲,給大家練練手,快來看看吧
    2021-11-11
  • C++中引用&與取地址&的區(qū)別分析

    C++中引用&與取地址&的區(qū)別分析

    這篇文章主要介紹了C++中引用&與取地址&的區(qū)別,有助于C++初學(xué)者更好的掌握指針的概念及用法,需要的朋友可以參考下
    2014-09-09
  • 基于Matlab實現(xiàn)離散系統(tǒng)分岔圖的繪制

    基于Matlab實現(xiàn)離散系統(tǒng)分岔圖的繪制

    這篇文章主要介紹了如何利用Matlab實現(xiàn)離散分岔圖的繪制,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Matlab有一定的幫助,需要的可以參考一下
    2022-04-04
  • C語言仿QQ聊天界面抖動功能

    C語言仿QQ聊天界面抖動功能

    這篇文章主要為大家詳細(xì)介紹了C語言仿QQ聊天界面抖動功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • C++第三方日志庫log4cplus的安裝與使用配置教程

    C++第三方日志庫log4cplus的安裝與使用配置教程

    log4cplus是C++編寫的開源的日志系統(tǒng),log4cplus具有線程安全、靈活、以及多粒度控制的特點,本文給大家介紹C++第三方日志庫log4cplus的安裝與使用教程,感興趣的朋友一起看看吧
    2022-02-02
  • c與c++之間的相互調(diào)用及函數(shù)區(qū)別示例詳解

    c與c++之間的相互調(diào)用及函數(shù)區(qū)別示例詳解

    這篇文章主要為大家介紹了c與c++相互調(diào)用的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 用C語言實現(xiàn)猜數(shù)字

    用C語言實現(xiàn)猜數(shù)字

    這篇文章主要為大家詳細(xì)介紹了用C語言實現(xiàn)猜數(shù)字,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C++實現(xiàn)LeetCode(228.總結(jié)區(qū)間)

    C++實現(xiàn)LeetCode(228.總結(jié)區(qū)間)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(228.總結(jié)區(qū)間),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評論

湟源县| 达孜县| 含山县| 靖州| 庆城县| 新建县| 贵溪市| 临邑县| 溧阳市| 伊金霍洛旗| 陵水| 兴宁市| 旅游| 汕尾市| 吉水县| 泉州市| 阜城县| 城口县| 云梦县| 石狮市| 濮阳市| 石嘴山市| 东丽区| 黄骅市| 南靖县| 荣成市| 吉林市| 富宁县| 东阳市| 湘阴县| 新沂市| 清水河县| 同德县| 芷江| 阳东县| 兴城市| 阿巴嘎旗| 韶关市| 靖西县| 浏阳市| 延安市|