C語言之主函式與預處理

2021-09-25 18:09:48 字數 1442 閱讀 2972

1.主函式

注意:main函式執行時,可以在命令列後加上引數

例題:用main函式實現對輸入的數排序

引申:atoi()函式:把數值型字串轉換成整數

面試題

問主函式既然不會被其它函式呼叫,為什麼要返回1?

int main()

答:mian中,c標準認為0表示成功,返回非零值表示主函式執行過程中的異常情況。具體什麼數字代表什麼異常,可以由程式設計者自己定義。

預處理問題1:什麼是預編譯?何時需要預編譯?

答:預編譯又稱預處理,是整個編譯工作最先做的工作,處理所有#開頭的檔案。即把#include標頭檔案拷貝到原始檔中,把#define中的巨集引數替換,以及條件編譯#if等

何時需要編譯:

1、總是使用不經常改動的大型**體。

2、程式由多個模組組成,所有模組都使用一組標準的包含檔案和相同的編譯選項。在這種情況下,可以將所有包含檔案預編譯為乙個預編譯頭。

(1)標頭檔案

#include:在系統指定的/usr/include中查詢

#inclue"stdio.h" :先在當前目錄下尋找,找不到再去自己指定的目錄下(gcc時加上 -i),最後去系統預設的usr/include/

(2)巨集定義(可以使用#ifdef,#ifndef來進行邏輯判斷,還可以使用#undef來取消定義

問題:#與##的作用?

答:#是將巨集引數轉化為字串,##是將兩個巨集引數鏈結

執行結果:5 9

巨集函式和普通函式的優缺點:

巨集函式的優點:執行效率高(不占用執行時間),節省空間(直接替換,不需傳值,不佔記憶體),但是無法除錯

普通函式的優點:編譯效率高(程式長度不變),有型別檢查(因為有資料型別)更安全

(3)條件編譯

問題:如何避免標頭檔案被重複包含?

答:例如:為避免標頭檔案my_head.h被重複包含,可在其中使用條件編譯:

#ifndef my_head_h

#define my_head_h

/其他語句/

C語言之預處理

預處理指令 在 編譯 0和1 之前執行的指令叫預處理指令。所有的預處理指令都是以 開頭。預處理的位置是隨便寫的 預處理指令的作用域 從編寫指令的那一行開始一直到檔案結尾 undef 巨集名 從這行 開始,巨集失效 巨集名一般用大寫 或者在巨集名前加 k 代表常量 變數名一般用小寫 一 巨集定義 格式...

C語言之預處理

預處理是c語言 也包括oc 的一部分,它們是一些特殊的命令.在編譯器對c程式 或者 oc程式 進行編譯之前,編譯器會對這些預處理命令進行處理,然後將這些處理的結構與源程式一起進行編譯.預處理命令有如下特徵.1 預處理命令必須以 號開頭 2 預處理通常位於程式的開頭部分 下面一起來看一下幾種使用情況 ...

c語言之預處理命令

c提供的預處理功能有 巨集定義檔案包含 條件編譯 為了與其她c語句區分,命令經常以符號 開頭。define 識別符號 字串 可以避免反覆輸入字串,後面不加 巨集定義在預設時的有效範圍是全部。也可以用 undef終止巨集定義區域。不含引數 巨集展開帶入程式 含引數 define s a,b a b i...