中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c語言內外部函數與編譯預處理的方法

發布時間:2022-03-17 14:22:20 來源:億速云 閱讀:172 作者:iii 欄目:大數據

這篇文章主要介紹“c語言內外部函數與編譯預處理的方法”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“c語言內外部函數與編譯預處理的方法”文章能幫助大家解決問題。

內部函數與外部函數

 C語言程序的基本構成單位是函數,多源程序文件構成的程序中,函數的定義和調用也必須考慮可以調用的程序范圍問題。

函數本質是全局的,定義函數的目的就是被其他函數調用。如果不回聲明的話,一個源程序文件中定義的函數既可以被本文件中的其它函數被調用,也可以被其它源程序文件中的函數調用。根據函數能否被其他源程序文件調用,可以把函數分為內部函數和外部函數。

1. 內部函數

   如果一個函數只能被其所在的源程序文件中其它的函數調用,則稱為內部函數。定義內部函數時,在函數頭的前面加上static關鍵字

static 類型標識符 函數名(形式參數列表)

{

}

2. 外部函數

如果在定義函數時,在函數頭的前面使用extern關鍵字進行說明,則函數為外部函數。可以供其他源程序文件中的函數調用,一般形式如下:

extern 類型標識符 函數名(形式參數列表)

{

}

例如:

extern void process(int a, int b)

{

    ……

}

C語言規定,如果在定義函數時沒用使用static或extern關鍵字說明,則函數默認為外部函數,即相對于使用了extern說明。

在需要調用外部函數的其它源程序文件中,需要對被調用的函數進行使用extern關鍵字進行原型說明。例如:extern void process(int a,int b);

編譯預處理

C語言的編譯預處理命令主要包括:宏定義、文件包含和條件編譯。預處理命令均以“#”開始,命令的結尾沒有分號,每條預處理命令必須占用單獨一行。

1.宏定義

(1) 無參宏定義

無參宏定義的一般形式如下:

    #define 宏名 字符序列

    如果源程序中使用了宏定義,編譯預處理過程中,自動把源程序中出現的所有“宏名”替換為“字符序列”,這是一個純文本替換,也稱為宏替換。

例如下面定義了3個無參宏名:

    #define PI 3.14

    #define R 10

    #define AREA PI*R*R

(2) 有參宏定義

有參宏定義的一般形式如下:

    #define 宏名(參數表) 字符序列

有參宏定義在進行宏替換時,源程序出現宏名的地方都使用字符序列替換,替換時使用宏引用中的實參去替換宏定義中的形參。

例如,如下定義了一個有參的宏名。

    #define MUL(a,b) (a)*(b)

源程序中可以使用如下語句使用有參的宏:

    int x=3, y=4, z;

    z=MUL(x,y);

注意:通常需要在有參宏定義時,字符序列中參數要加上圓括號,以免進行宏替換時出現錯誤,如z=MUL(x+3,y-1)*10,進行宏替換后的語句為:z=x+3*y-1*10;。

(3) 文件包含

    文件包含也是一種編譯預處理命令,其作用是把被包含的文件的內容全部引入到使用文件包含命令的源程序文件中。文件包含命令有以下2種形式:

#include <文件名> 或  #include "文件名"

文件包含命令使用尖括號形式時,編譯器在系統默認的路徑中尋找被包含文件;使用雙引用形式時,編譯器先在用戶程序的當前工作目錄中尋找被包含文件,如果找不到文件,再去系統默認的路徑中尋找文件。

下面是幾個文件包含命令的例子:

#include <stdio.h>  //包含系統預定義的頭文件

#include "user.h"   //包含自定義的頭文件

#include "func.c"   //包含自定義的源程序文件

(4)條件編譯

通常情況下,源程序文件中的所有語句行都需要參與編譯,并生成到目標文件中。如果源程序需要根據特定的條件決定一部分源代碼是否參加編譯,則需要使用條件編譯預處理命令。

    C語言的條件編譯預處理指令主要有三種形式。

1、#if指令

一般形式:

#if 表達式

    程序段1

#else

    程序段2

#endif

2、#ifdef指令

一般形式:

#ifdef 宏名

    程序段1

#else

    程序段2

#endif

3、#ifndef指令

一般形式:

#ifndef 宏名

    程序段1

#else

    程序段2

#endif

關于“c語言內外部函數與編譯預處理的方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

虹口区| 剑川县| 赤城县| 治多县| 无棣县| 隆安县| 石城县| 阳江市| 灵宝市| 齐齐哈尔市| 宜良县| 新乡市| 高阳县| 龙江县| 大英县| 永州市| 靖安县| 德昌县| 德保县| 新巴尔虎右旗| 海宁市| 大荔县| 五河县| 钟山县| 收藏| 永清县| 海林市| 保靖县| 大余县| 怀远县| 平度市| 建宁县| 东阿县| 长宁区| 长海县| 印江| 富宁县| 梓潼县| 济阳县| 普陀区| 子洲县|