溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C++編程->預(yù)編譯指令小結(jié)

發(fā)布時(shí)間:2020-07-15 09:54:04 來源:網(wǎng)絡(luò) 閱讀:250 作者:王孟賢 欄目:移動(dòng)開發(fā)

首先了解一下預(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,則拋出異常。

向AI問一下細(xì)節(jié)

免責(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)容。

c+
AI