笔记2:预处理器-(1)预处理指令

通常来说预处理器是由预处理指令(由#字符开头的一些命令)控制的,而大多数指令都属于以下三种类型之一:

   1.宏定义:#define指令定义一个宏,#undef指令删除一个宏定义

   2.文件包括:#include指令导致一个指定文件的内容被包含到程序之中

   3.条件编译:#if、#ifdef、#ifndef、#elif、#else和#endif指令可以根据预处理器可以测试的条件来确定是将一段文本块包含到程序中还是讲其排除在程序之外

(*.除此之外还有#error、#line、#pragma等指令,相对来说这些指令较少用到)

对于众多预处理指令来说,有几条通用的规则适用于所有的预处理指令:  

  1.指令都以#开始。#符号不需要在一行的行首,只要它们之前只有空白字符就行;在#之后是指令名,接着是指令所需要的信息

  2.在指令的符号之间可以插入任意数量的空格或水平制表符。如:

#          define       N               100

  3.指令总是在第一个换行符处结束,除非明确地指明要延续。如果想在下一行延续指令,则必须在当前行的末尾使用\字符,如:

#define DISK_CAPACITY(SIDES *\
                      TRACKS_PRE_SIDE*                      SECTORS_PER_TRACK*                      BYTES_PER_SECTOR)

  4.指令可以出现在程序中的任何地方。通常来说,我们长将#define和#include指令放在文件的开始,而其他指令则放在后面,甚至可以放在函数定义的中间

  5.注释可以与指令放在同一行。实际上,在宏定义的后面加一个注释来解释红的含义是一种较好的习惯。

ps:例子来源于《C语言程序设计现代方法》

时间: 2024-10-09 21:51:42

笔记2:预处理器-(1)预处理指令的相关文章

《C Primer Plus》学习笔记——C预处理器和C库

1.在Unix系统中,尖括号告诉预处理器在一个或多个标准系统目录中寻找文件.双引号告诉预处理器先在当前目录(或文件名中指定的其他目录)中寻找文件,然后在标准位置寻找文件. 2.#undef指令:取消定义一个给定的#define #define LIMIT 400 #undef LIMIT 3.条件编译 #ifdef.#else和#endif指令 #ifdef 宏名 //语句段1 #else //语句段2 #endif 作用:当标识符已经被定义过(一般是用#define命令定义),则对语句段1进行

C++学习笔记(六):高级编程:模板,预处理器,信号处理,多线程,Web编程

模板 模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码. 模板是创建泛型类或函数的蓝图或公式. 库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念. 每个容器都有一个单一的定义,比如 向量,我们可以定义许多不同类型的向量,比如vector <int>和vector <string>. 您可以使用模板来定义函数和类,接下来让我们一起来看看如何使用. 函数模板 模板函数定义的一般形式如下所示: template <class type>

预处理器

本文是对C++预处理器的学习整理,参考了网站www.learncpp.com相关章节的内容. 一.概述 代码在编译之前需要通过预处理器进行预处理,预处理器运行时,逐行扫描代码寻找预处理指令.预处理指令是以#开头.换行符结尾(不是分号:)的代码. 预处理器主要实现一下三个功能: 1. include 2. macro define 宏定义. 3. 条件编译 二.include 故名思意,#include用于包含头文件,预处理器在遇到#include 指令时,将相应头文件的内容复制到指令所在的位置.

C语言难点2之预处理器

C语言难点2之预处理器 1 预处理阶段 在预处理阶段中,C预处理器在源代码编译之前对其进行一些文本性质的操作.它的主要任务包括删除注释,插入被#include指定包含的文件的内容,定义和替换由#define指令定义的符号一起确定代码的部分内容是否应该根据一些条件编译指令进行编译. 2 #define命令 采用宏定义时候的易错点: 格式: #define  name  stuff 有了这条指令之后,每当有符号name出现在这条指令后面时,预处理器就会把它替换成stuff. 注意:宏定义后面不能加上

Microsoft Visual C++ 6.0预处理器参考手册

返回总目录 Microsoft Visual C++ 6.0 预处理器参考手册 目录引言.......................................................................................................................3 特殊术语.................................................................................

[精通Objective-C]预处理器

[精通Objective-C]预处理器 参考书籍:<精通Objective-C>[美] Keith Lee 目录 精通Objective-C预处理器 目录 预处理器概述 预处理器语言 预处理器指令 宏 预处理器概述 预处理根据一系列预定义规则,使用一些字符序列替换输入的字符序列.这些操作主要分为以下三步: Created with Rapha?l 2.1.0输入源文件执行文本翻译将输入的源文件拆分成多个记号将输入代码转换为预处理器语言 1.文本翻译:预处理会将输入的源文件拆分成代码行.使用单个

C 基础 - 预处理器与C库

C预处理器在程序执行之前查看程序. 预处理器不做计算,不对表达式求值,只进行替换. 预处理器指令: #define (符号常量), 定义时组成部分如下: * #deinfine 符号指令 * 宏 * 替换列表 对于大部分的数字常量,可以使用符号常量. #define 中还可以使用参数 #define SQUARE(X) X*X z = SQUARE(2); 文件包含: #include 指令 当预处理器发现#include指令时,会查看后面的文件名把文件的内容包含到当前文件中.

C Primer Plus读书笔记-预处理器指令

代码中经常看到  #define ,#ifdef #define :明显常量 一般的指令长度仅限与一行代码,除了\(反斜杠线)可以拓展到下一行外. 一般情况下,每个#define行由三个部分组成. 第一部分为#define 指令本身 第二部分为所选择的缩略语,这些缩略语称为宏(macro).  宏的名字中不允许有空格!只能使用字母,下划线(_),和数字之间的组合,第一个字符不能为数字 第三部分(#define行除了第一第二部分外的部分).称为替换列表或主体. 预处理器在程序中发现宏的实例后,总会

笔记3:预处理器-(2)宏定义

#define指令称为宏定义指令,通常用#define指令来定义一个宏用来代表其他东西的一个名字(如常量表达式等).通常来说预处理器会通过将宏的名字和它的定义存储在一起来响应#define指令.当这个宏在后面的程序中使用到时,预处理器会"扩展"宏,将宏替换为其定义值. 简单的宏 简单的宏的定义格式: #define 标识符 替换列表 如: #define DTE_LEN 80 #define TRUE 1 #define FALSE 0 #define PI 3.1415926 #de