跳转到内容

编程基础/编译器指令

来自维基教科书,开放的书籍,开放的世界

对预处理器指令的一般解释,以及它们如何被编译器评估。讨论了 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
一个编译器指令,用于将文件的内容插入程序中。

参考文献

[编辑 | 编辑源代码]
华夏公益教科书