預處理部分
黑色印記
1.什麼是幻數?
2.宏函數與自定義函數的區別?
主要有三點不同。
(1)編譯階段不同:宏函數在與處理階段,而自定義函數在編譯階段。
(2)執行速度不同:宏函數省去了調用尋址和返回的過程,因而宏函數的執行效率較高。
(3)宏函數不佔用內存,自定義函數佔用內存。
3.舉例時間換空間,空間換時間的例子?
用編譯時間換內存空間的例子是宏函數的定義。因爲在預處理階段,將宏函數替換,增加了編譯時間,但是宏函數不佔用內存。
用內存空間換執行時間的例子是內聯函數。省去了函數的調用尋址和返回的時間,但增加了代碼量。
4.如何防止頭文件重複編譯?
利用條件編譯即可。#ifndef #define #endif 。他還可以防止變量宏,或結構體的重複定義。
使用方式,比如,你要包含一個FUNCA_H的頭文件。#ifndef FUNCA_H
#define FUNA_H
...內容...
#endif
5.有哪些常見的內置宏?
常見的內置宏有以下幾種。
符號 樣例值 含義
_FILE_ "name.c" 進行編譯的源文件名
_LINE_ 25 文件當前的行號
_DATE_ "jan 31 1997" 文件被編譯的日期
_TIME_ "18:04:30" 文件被編譯的時間
_STDC_ 1 如果編譯器遵循ANSI C,其值就爲1,否則未定義。