首先了解一下預編譯函數:
#include 包含一個源代碼文件
#define 定義宏
#undef 取消已定義的宏
#if 如果給定條件為真,則編譯下面代碼
#ifdef 如果宏已經定義,則編譯下面代碼
#ifndef 如果宏沒有定義,則編譯下面代碼
#elif 如果前面的#if給定條件不為真,當前條件為真,則編譯下面代碼
#endif 結束一個#if……#else條件編譯塊
#error 停止編譯并顯示錯誤信
#include小結:
1. #include <iostream.h>和#include <iostream>區別
#include <iostream.h>是老規范,現已經拋棄
#include <iostream>是新規范,使用名稱空間避免名稱沖突。即將所有的定義放在了一個名稱空間std中
2. #include <iostream>和#include "iostream"區別
#include <iostream>直接在系統的路徑下查找此頭文件。多是系統的頭文件
#include "iostream"首先在當前目錄查找,如果沒有找到再到系統目錄查找
3. 頭文件的多次包含問題
編譯器對每個文件只編譯一次生成一份機器代碼.obj,如果在多個地方包含了同一個頭文件,則會出現多次包含的錯誤,即試圖讓編譯器將此文件編譯多次生成多份機器代碼。
預編譯保護解決此問題。
#ifdef #ifndef #define #endif 條件編譯小結
#ifdef DEBUG // 測試DEBUG是否已經定義
#ifndef DEBUG // 測試DEBUG是否沒有定義
#define // 定義DEBUG
#endif // #ifdef或者#ifndef語句結束
C++中,定義頭文件時,為了避免頭文件被多次引用而造成的重復定義,需要將整個頭文件內容包含在下面的預編譯指令中(假設頭文件為file.h):
#ifndef FILE_H
#define FILE_H
// 頭文件的內容
#endif
常見的預編譯常量小結
__plusplus // 編譯C++程序時編譯器自動定義
__STDC__ // 編譯C程序時編譯器自動定義
__FILE__ // 當前編譯的文件名
__LINE__ // 當前編譯文件的當前行
__DATE__ // 編譯文件時的日期
__TIME__ // 編譯文件時的時間
其中,__FILE__與__LINE__在編譯期間是不斷更新的,其他四個變量在編譯期間固定。
assert()
C語言定義的預編譯宏,斷言某個表達式為true;若為false,則拋出異常。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。