首先了解一下預(yù)編譯函數(shù):
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括硯山網(wǎng)站建設(shè)、硯山網(wǎng)站制作、硯山網(wǎng)頁(yè)制作以及硯山網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,硯山網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶(hù)以成都為中心已經(jīng)輻射到硯山省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶(hù)的支持與信任!
#include 包含一個(gè)源代碼文件
#define 定義宏
#undef 取消已定義的宏
#if 如果給定條件為真,則編譯下面代碼
#ifdef 如果宏已經(jīng)定義,則編譯下面代碼
#ifndef 如果宏沒(méi)有定義,則編譯下面代碼
#elif 如果前面的#if給定條件不為真,當(dāng)前條件為真,則編譯下面代碼
#endif 結(jié)束一個(gè)#if……#else條件編譯塊
#error 停止編譯并顯示錯(cuò)誤信
#include小結(jié):
1. #include
#include
#include
2. #include
#include
#include "iostream"首先在當(dāng)前目錄查找,如果沒(méi)有找到再到系統(tǒng)目錄查找
3. 頭文件的多次包含問(wèn)題
編譯器對(duì)每個(gè)文件只編譯一次生成一份機(jī)器代碼.obj,如果在多個(gè)地方包含了同一個(gè)頭文件,則會(huì)出現(xiàn)多次包含的錯(cuò)誤,即試圖讓編譯器將此文件編譯多次生成多份機(jī)器代碼。
預(yù)編譯保護(hù)解決此問(wèn)題。
#ifdef #ifndef #define #endif 條件編譯小結(jié)
#ifdef DEBUG // 測(cè)試DEBUG是否已經(jīng)定義
#ifndef DEBUG // 測(cè)試DEBUG是否沒(méi)有定義
#define // 定義DEBUG
#endif // #ifdef或者#ifndef語(yǔ)句結(jié)束
C++中,定義頭文件時(shí),為了避免頭文件被多次引用而造成的重復(fù)定義,需要將整個(gè)頭文件內(nèi)容包含在下面的預(yù)編譯指令中(假設(shè)頭文件為file.h):
#ifndef FILE_H
#define FILE_H
// 頭文件的內(nèi)容
#endif
常見(jiàn)的預(yù)編譯常量小結(jié)
__plusplus // 編譯C++程序時(shí)編譯器自動(dòng)定義
__STDC__ // 編譯C程序時(shí)編譯器自動(dòng)定義
__FILE__ // 當(dāng)前編譯的文件名
__LINE__ // 當(dāng)前編譯文件的當(dāng)前行
__DATE__ // 編譯文件時(shí)的日期
__TIME__ // 編譯文件時(shí)的時(shí)間
其中,__FILE__與__LINE__在編譯期間是不斷更新的,其他四個(gè)變量在編譯期間固定。
assert()
C語(yǔ)言定義的預(yù)編譯宏,斷言某個(gè)表達(dá)式為true;若為false,則拋出異常。