您好,登錄后才能下訂單哦!
首先了解一下預(yù)編譯函數(shù):
#include 包含一個(gè)源代碼文件
#define 定義宏
#undef 取消已定義的宏
#if 如果給定條件為真,則編譯下面代碼
#ifdef 如果宏已經(jīng)定義,則編譯下面代碼
#ifndef 如果宏沒有定義,則編譯下面代碼
#elif 如果前面的#if給定條件不為真,當(dāng)前條件為真,則編譯下面代碼
#endif 結(jié)束一個(gè)#if……#else條件編譯塊
#error 停止編譯并顯示錯(cuò)誤信
#include小結(jié):
1. #include <iostream.h>和#include <iostream>區(qū)別
#include <iostream.h>是老規(guī)范,現(xiàn)已經(jīng)拋棄
#include <iostream>是新規(guī)范,使用名稱空間避免名稱沖突。即將所有的定義放在了一個(gè)名稱空間std中
2. #include <iostream>和#include "iostream"區(qū)別
#include <iostream>直接在系統(tǒng)的路徑下查找此頭文件。多是系統(tǒng)的頭文件
#include "iostream"首先在當(dāng)前目錄查找,如果沒有找到再到系統(tǒng)目錄查找
3. 頭文件的多次包含問題
編譯器對(duì)每個(gè)文件只編譯一次生成一份機(jī)器代碼.obj,如果在多個(gè)地方包含了同一個(gè)頭文件,則會(huì)出現(xiàn)多次包含的錯(cuò)誤,即試圖讓編譯器將此文件編譯多次生成多份機(jī)器代碼。
預(yù)編譯保護(hù)解決此問題。
#ifdef #ifndef #define #endif 條件編譯小結(jié)
#ifdef DEBUG // 測(cè)試DEBUG是否已經(jīng)定義
#ifndef DEBUG // 測(cè)試DEBUG是否沒有定義
#define // 定義DEBUG
#endif // #ifdef或者#ifndef語句結(jié)束
C++中,定義頭文件時(shí),為了避免頭文件被多次引用而造成的重復(fù)定義,需要將整個(gè)頭文件內(nèi)容包含在下面的預(yù)編譯指令中(假設(shè)頭文件為file.h):
#ifndef FILE_H
#define FILE_H
// 頭文件的內(nèi)容
#endif
常見的預(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ù)編譯宏,斷言某個(gè)表達(dá)式為true;若為false,則拋出異常。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。