跳轉到內容

程式設計基礎/編譯器指令

來自華夏公益教科書,開放的書籍,開放的世界

對預處理器指令的一般解釋,以及它們如何被編譯器評估。討論了 include 和 define。請注意,此討論特定於 C、C++ 和類似語言。Java 和 Python 不使用預處理器。

一般討論

[編輯 | 編輯原始碼]

編譯器指令是指示編譯器在正式開始編譯程式之前完成任務的指令,因此它們有時被稱為預處理器指令。在預處理步驟中,編譯器會查詢編譯器指令並將它們逐一處理。完成指令後,編譯器會進入第二步,檢查語法錯誤(違反語言規則)並將原始碼轉換為包含機器語言指令、資料區域和在物件檔案連結到其他物件檔案時需要解析的專案列表的物件程式碼。

在 C++ 中,行首的井號或 # 表示接下來的詞是指令(或命令詞),需要進行評估。兩個最常見的編譯器指令是

  1. include - 緊跟 include 的是需要插入到檔案該位置的檔名稱。這些檔案通常被稱為“標頭檔案”,因為 include 指令通常被插入到檔案的最頂部(在頭部),作為第一個專案之一。
  2. define - 緊跟 define 的是識別符號名稱和值。編譯器會儲存此識別符號名稱和值,當它在程式中遇到識別符號名稱時,就會用值替換識別符號名稱。

在以下示例中,include 指令插入一個檔案,其中包含來自輸入輸出流庫的程式碼。此檔案包含使用 cout 和 cin 向監視器傳送資料或從鍵盤獲取資料的必要程式碼。

#include <iostream>

在下一個示例中,define 指令用於處理常量(稱為定義常量)。

示例 1:在 C++ 中替換 PI

[編輯 | 編輯原始碼]
#define PI 3.14159
....Later on in the program when it encounters PI
....it will replace or substitute PI with the value 3.14159
....For example:
area_circle = radius * radius * PI;
    would become:
area_circle = radius * radius * 3.14159;

需要注意的是,C++ 中的編譯器指令後面沒有分號。在 C++ 中,程式設計指令或語句以分號結尾,但編譯器指令除外。

示例 2:在 Java 中匯入 PI

[編輯 | 編輯原始碼]

Java 使用 java.lang.Math.PI 庫。[1]

import static java.lang.Math.PI;       //import PI
...
area_circle = radius * radius * PI;    //use PI

示例 3:在 Python 中匯入 PI

[編輯 | 編輯原始碼]

Python 使用 math.pi 庫。[2]

import math                                 #import math
...
area_circle = radius * radius * math.pi;    #use PI
編譯器指令
指示編譯器在正式開始編譯程式之前完成任務的指令。
include
一個編譯器指令,用於將檔案的內容插入程式中。

參考文獻

[編輯 | 編輯原始碼]
華夏公益教科書