亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

簡單講解C++的內部和外部函數以及宏的定義

2020-05-23 14:15:17
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了簡單講解C++的內部和外部函數以及宏的定義,是C++入門學習中的基礎知識,需要的朋友可以參考下

C++內部函數和外部函數

函數本質上是全局的,因為一個函數要被另外的函數調用,但是,也可以指定函數只能被本文件調用,而不能被其他文件調用。根據函數能否被其他源文件調用,將函數區分為內部函數和外部函數。

內部函數

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

 

 
  1. static 類型標識符 函數名(形參表); 

 

 
  1. static int fun(int a, int b); 

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

外部函數

在定義函數時,如果在函數首部的最左端冠以關鍵字extern,則表示此函數是外部函數,可供其他文件調用。如函數首部可以寫為:

 

 
  1. extern int fun (int a, int b); 

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

在需要調用此函數的文件中,用extern聲明所用的函數是外部函數。

【例】輸入兩個整數,要求輸出其中的大者,用外部函數實現。

 

 
  1. /*******file1.cpp(文件1)*******/ 
  2. #include <iostream> 
  3. using namespace std; 
  4. int main( ) 
  5. extern int max(int,int); //聲明在本函數中將要調用在其他文件中定義的max函數 
  6. int a,b; 
  7. cin>>a>>b; 
  8. cout<<max(a,b)<<endl; 
  9. return 0; 
  10. /*******file2.cpp(文件2)*******/ 
  11. int max(int x,int y) 
  12. int z; 
  13. z=x>y?x:y; 
  14. return z; 

運行情況如下:

 

 
  1. 7 -34↙ 

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

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

 

 
  1. int max(intint); 

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

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

 

 
  1. double sin(double x); 

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

 

 
  1. #include <cmath> 

即可。這時,在該文件中就能合法地調用各數學庫函數了。

C++宏定義#define

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

 

 
  1. #define 標識符 字符串 

這就是已經介紹過的定義符號常量。如:

 

 
  1. #define PI 3.1415926 

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

 

 
  1. #define 宏名(參數表) 字符串 

如:

 

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

使用的形式如下:

 

 
  1. area=S(3, 2); 

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

 

 
  1. area=3*2; 

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕不卡av| 国产亚洲精品日韩| 久久深夜福利免费观看| 久久视频在线观看免费| 精品日本美女福利在线观看| 日韩成人中文电影| 日本午夜人人精品| 久久成人免费视频| 两个人的视频www国产精品| 国产69精品久久久久99| 亚洲天堂精品在线| 亚洲第一中文字幕| 91精品啪在线观看麻豆免费| 亚洲一区二区三区在线视频| 欧洲成人免费aa| 国产精品电影网站| 欧美在线亚洲在线| 亚洲一区第一页| 久久精品国产精品亚洲| 久久久久久美女| 亚洲大胆美女视频| 亚洲国产精品va在线看黑人动漫| 清纯唯美亚洲激情| 久久天天躁狠狠躁夜夜躁| 国产精品亚洲综合天堂夜夜| 日韩欧美精品网站| 日韩亚洲欧美中文在线| 午夜精品在线观看| 亚洲a区在线视频| 操91在线视频| 亚洲男人的天堂网站| 亚洲xxx大片| 欧美日韩亚洲视频一区| 中文字幕亚洲一区二区三区五十路| 日韩电影中文字幕一区| 久久国产精品久久国产精品| 日韩中文字幕视频在线| 日韩欧美精品在线观看| 亚洲美女性视频| 国产精品777| 国产精品一区二区av影院萌芽| 欧美激情精品久久久久久| 一本久久综合亚洲鲁鲁| 欧美性xxxx极品高清hd直播| 97精品视频在线播放| 日本精品va在线观看| 亚洲精品美女视频| 色综合久久88色综合天天看泰| 国产精品精品视频一区二区三区| 国产亚洲欧洲高清一区| 色伦专区97中文字幕| 国产婷婷97碰碰久久人人蜜臀| 日韩电影中文字幕在线观看| 亚洲一区二区久久久久久| 亚洲精品久久久久久久久久久| 91九色蝌蚪国产| 美女视频黄免费的亚洲男人天堂| 91精品国产91久久久久久不卡| 久久久国产一区二区| 日本aⅴ大伊香蕉精品视频| 最近更新的2019中文字幕| 精品免费在线观看| 成人福利在线观看| 亚洲国产一区自拍| 中文字幕日韩av电影| 欧美激情精品久久久久久| 国外成人性视频| 国产一区二区成人| 日韩成人小视频| 久久夜精品va视频免费观看| 亚洲色图17p| 亚洲一区亚洲二区| 欧美性猛交xxxx富婆弯腰| 日韩激情片免费| 精品高清一区二区三区| 色悠悠久久久久| 国产精品青草久久久久福利99| 91精品国产综合久久男男| 精品久久久久久久久久久久久久| 欧美性猛交xxxxx免费看| 亚洲欧美激情精品一区二区| 国模精品视频一区二区| 亚洲另类xxxx| 日韩国产一区三区| 国产亚洲精品美女久久久久| 精品国产精品自拍| 欧美成人午夜激情| 97精品国产aⅴ7777| 久久亚洲精品网站| 在线亚洲国产精品网| 亚洲视频在线免费观看| 国产亚洲精品日韩| 97视频在线观看免费高清完整版在线观看| 夜夜嗨av色一区二区不卡| 亚洲免费小视频| 亚洲美女性生活视频| 青青a在线精品免费观看| 岛国av一区二区在线在线观看| 国产一区二区三区网站| 久久成人一区二区| 亚洲综合中文字幕在线观看| 国产综合久久久久| 久久国产精品首页| 国产成人中文字幕| 欧美性色19p| 成人精品一区二区三区电影黑人| 国产日本欧美一区二区三区在线| 亚洲欧美日韩精品久久奇米色影视| 日韩小视频网址| 欧美精品激情在线| 亚洲人成电影在线播放| 国产精品视频网址| www日韩欧美| 久久精品91久久久久久再现| 成人精品一区二区三区电影黑人| 亚洲第一视频网| 欧洲成人午夜免费大片| 在线播放国产精品| 久久国产加勒比精品无码| 亚洲另类欧美自拍| 91精品久久久久久久久中文字幕| 欧美综合第一页| 久久精品91久久久久久再现| 亚洲精品在线不卡| 日本成人黄色片| 91天堂在线视频| 午夜精品久久久久久99热软件| 精品福利视频导航| 啊v视频在线一区二区三区| 国产91av在线| 55夜色66夜色国产精品视频| 日韩亚洲第一页| 欧美人交a欧美精品| 亚洲欧美日韩精品久久| 国产精品精品视频| 亚洲天堂av高清| 日本一区二区三区四区视频| 青青精品视频播放| 欧美视频在线观看免费| 狠狠躁夜夜躁人人躁婷婷91| 久久精品99无色码中文字幕| 日本成人免费在线| 欧美夫妻性视频| 成人激情视频小说免费下载| 精品久久久久久久久久| 成人性教育视频在线观看| 久久99精品久久久久久噜噜| 亚洲精品自产拍| 欧洲精品久久久| 亚洲精品大尺度| 亚洲自拍偷拍网址| 日韩av中文字幕在线播放| 中文字幕av一区二区| 国产一区二区三区久久精品| 国产成人极品视频| 欧美性猛交xxxx乱大交3| 国产成人激情视频| 国产ts一区二区| 在线观看国产精品日韩av| 久久综合久久88| 欧美激情视频网| 欧美视频免费在线观看| 亚洲精品欧美一区二区三区| 国产精品丝袜视频|