C_Learning (4)

/ 預處理命令
  / 宏定義
    / 通常形式:#define 宏名 字符串
      # 表示這是一條預處理命令
      宏名是一個標識符,必須符合C語言標識符的規定
      字符串能夠是常數、表達式、格式化字符串等
    / 注意:
    (1)若是在串中含有宏名,則不進行替換
    (2)若是串長於一行,可在行末尾用"\"續行
    (3)#define 出如今程序中函數的外面,宏名的有效範圍爲整個源文件
    (4)能夠用#undef 終止宏定義的做用域
    (5)宏定義時參數要加括號,如不加括號,有時會引發錯誤
    (6)宏擴展必須使用括號來保護表達式中低優先級的操做符

  / #include 指令
    / 在一個源文件中使用#include 指令能夠將另外一個源文件的所有內容包含進來,且被讀入的源文件必須使用雙引號或者尖括號括起來
    / 雙引號與尖括號的區別
      尖括號:系統到存放C函數庫頭文件所在的目錄中尋找要包含的文件
      雙引號:系統先在用戶當前目錄中尋找要包含的文件,若找不到,再到存放C函數庫頭文件所在的目錄中尋找要包含的文件[在雙引號中給出文件路徑]
    / 頭文件
      / 通常狀況下,可將以下內容放入 .h 頭文件中
      (1)宏定義
      (2)結構、聯合和枚舉聲明
      (3)typedef 聲明
      (4)外部函數聲明
      (5)全局變量聲明

  / 條件編譯
    / 通常狀況下,源程序中全部的行都參加編譯,但有時只但願對一部份內容在知足必定條件時才進行編譯,就須要使用一些條件編譯命令
    / #if 條件編譯指令
    (1)
    #if 參數表達式
    程序段
    #endif
    (2)
    #if 參數表達式1
    程序段1
    #else
    #if 參數表達式n
    程序段n
    #endif(n個)
    (3)
    #if 參數表達式1
    程序段1
    #elif 參數表達式n
    程序段n
    #endif
    若是參數表達式爲真,則編譯#if 和 #endif 之間的程序段,不然跳過不編譯
  / #ifdef 條件編譯指令
    #ifdef 宏替換名——若是宏替換名已被定義,則對語句段進行編譯
    #ifndef 宏替換名——若是宏替換名未定義,則對語句段進行編譯函數


  / #line 條件編譯指令
    #line 用於改變 _LINE_ 與 _FILE_ 的內容,_LINE_ 用於存放當前編譯行的行號,_FILE_ 用於存放當前編譯的文件名
    #line 行號["文件名"]

  / #pragma 條件編譯指令
    #pragma 的做用是設定編譯器的狀態,或者指示編譯器完成一些特定的操做
    #pragma 參數
      參數包括:
      (1) Message: 在編譯信息輸出窗口中輸出相應的信息
      (2) code_seg: 設置程序中函數代碼存放的代碼段
      (3) once: 保證頭文件被編譯一次

  / 預約義宏名
    _LINE_    當前被編譯代碼的行號
    _FILE_    當前源程序的文件名稱
    _DATA_    當前源程序的建立日期
    _TIME_   當前源程序的建立時間
    _STDC_    判斷當前編譯器是否爲標準C,若其值爲1表示符合,不然不符合code

相關文章
相關標籤/搜索