<em id="0s9ur"></em>

<em id="0s9ur"></em>
<div id="0s9ur"><ol id="0s9ur"></ol></div>
<div id="0s9ur"><tr id="0s9ur"><object id="0s9ur"></object></tr></div>

      <dl id="0s9ur"><ins id="0s9ur"><small id="0s9ur"></small></ins></dl>

      電子發燒友網 > 控制/MCU > 正文

      C51編譯器中的預處理器指令及使用解析

      2018年11月02日 15:54 ? 次閱讀

      Cx51編譯器中的預處理器處理源程序文件中的指令。Cx51支持所有的ANSI C指令。

      Directives指令

      預處理器指令前面不能有空格,并且必須加前綴‘#’如:

      #pragma

      #include

      #define DEBUG 1

      C51編譯器中的預處理器指令及使用解析

      下面列出預處理器指信令和簡單描述

      指令 描述

      Define 定義一個預處理器宏或常量

      elif 如果前面的if, ifdef, ifndef或elif分支都不成立的話,初始化if條件的一個分支

      else 如果前面的if, ifdef或 ifndef分支都不成立的話,初始化if條件的一個分支

      endif 結束一個if, ifdef, ifndef, elif, 或 else 塊

      error 輸出用戶定義的一個錯誤信息。這個指令使用編譯器發出一個特定的錯誤信息

      ifdef 為條件編譯求表達式的值。要被計算的參數就是一個definiTIon 定義的名字

      ifndef 與ifdef相同,只是如果這個名字沒有被定義時運算結果為真

      if 為條件編譯求表達式的值

      include 從外部文件中讀取源程序文本。

      line 指定一個行號和一個可選的文件名,這個指令用于在錯誤信息中定位錯誤的位置。Specifies a line number together with an opTIonal filename. These specificaTIons are used in error messages to idenTIfy the error position.

      pragma 允許你使用可以在C51命令行上使用的控制指令。Allows you to specify control directives that may be included on the C51 command line. Pragmas may contain the same control directives that are specified on the command line.

      undef 檢查一個宏或常量是否已經定義

      Stringize Operator(#)

      字符化操作符#

      如果操作符出現在宏的參數的前面,參數庫就會做為字符串傳遞到宏里。如

      #define stringer(x) printf (#x “\n”)

      stringer (text)

      預處理器處理的結果為:

      printf (“text\n”)

      Token-pasting operator(##)

      這個操作符在宏定義中連結兩個參數。它允許兩個分開的標號在宏定義中合并為一個標號

      如果在宏定中一個宏參數名字緊隨著或緊跟著這操作符,宏參數和這個操作符被參數傳遞的值取代。鄰接著操作符的文本不是宏參數名稱的宏是不受影響的。如:

      #define paster(n) printf (“token” #n “ = %d”, token##n)

      paster (9);

      預處理器處理的結果為:

      printf (“token9 = %d”, token9);

      Predefined Macro Constants預定義宏常量

      常量 描述

      _ _C51_ _ C51編譯器的版本Version number of the Cx51 compiler (for example, 610 for version 6.10)。

      _ _DATE_ _ 編譯開始的日期Date when the compilation was started.

      _ _FILE_ _ 被編譯文件的名字Name of the file being compiled.

      _ _LINE_ _ 被編譯文件當前的行號Current line number in the file being compiled.

      _ _MODEL_ _ 選擇的存儲器模式Memory model selected (0 for small, 1 for compact, 2 for large)。

      _ _TIME_ _ 編譯開始的時間Time when the compilation was started.__STDC_ _ 定義為1時,表示完全遵守ANSI C標準

      技術專區

      下載發燒友APP

      打造屬于您的人脈電子圈

      關注電子發燒友微信

      有趣有料的資訊及技術干貨

      關注發燒友課堂

      鎖定最新課程活動及技術直播
      收藏 人收藏
      分享:

      評論

      相關推薦

      Keil C51編譯器中文手冊下載地址

      發表于 2018-07-13 02:55 ? 243次閱讀
      Keil C51編譯器中文手冊下載地址

      電子電路設計之C51單片機常見問題

      筆者在工作中實際使用過AT89C2051、AT89C51、AT89C52等51單片機,本文就51單片...

      發表于 2011-11-22 11:28 ? 8372次閱讀
      電子電路設計之C51單片機常見問題
      上海快3开奖走势图
      <em id="0s9ur"></em>

      <em id="0s9ur"></em>
      <div id="0s9ur"><ol id="0s9ur"></ol></div>
      <div id="0s9ur"><tr id="0s9ur"><object id="0s9ur"></object></tr></div>

          <dl id="0s9ur"><ins id="0s9ur"><small id="0s9ur"></small></ins></dl>
          <em id="0s9ur"></em>

          <em id="0s9ur"></em>
          <div id="0s9ur"><ol id="0s9ur"></ol></div>
          <div id="0s9ur"><tr id="0s9ur"><object id="0s9ur"></object></tr></div>

              <dl id="0s9ur"><ins id="0s9ur"><small id="0s9ur"></small></ins></dl>