C中的预处理命令是由ANSIC统一规定的,但它不是C语言的本身组成部分,不能直接对它们进行编译,因为编译程序无法识别它们。必须对程序进行通常的编译(包括词法和语法分析,代码生成,优化等)之前,先对程序中这些特殊的命令进行“预处理”,例如:如果程序中用#include命令包含一个文件“stdio.h”,则在预处理时,将stdio.h文件中的实际内容代替该命令。经过预处理后的程序就像没有使用预处理的程序一样干净了,然后再由编译程序对它进行编译处理,得到可供执行的目标代码。现在的编译系统都包括了预处理,编译和连接部分,在进行编译时一气呵成。我们要记住的是预处理命令不是C语言的一部分,它是在程序编译前由预处理程序完成的。

C提供的预处理功能主要有三种:宏定义,文件包含,条件编译。它们的命令都以“#”开头。

一,宏定义:用一个指定的标识符来代表一个字符串,它的一般形式为:

#define 标识符字符串

#define PI 3.1415926

我们把标识符称为“宏名”,在预编译时将宏名替换成字符串的过程称为“宏展开”,而#define 是宏定义命令。

几个应该注意的问题:

1,是用宏名代替一个字符串,也就是做简单的置换,不做正确性检查,如把上面例子中的1写为小写字母l,预编译程序是不会报错的,只有在正式编译是才显示出来。

2,宏定义不是C语句,不必在行未加分号,如果加了分号则会连分号一起置换。

3,#define语句出现在程序中函数的外面,宏名的有效范围

预处理命令不是c语言本身的组成部分,C中的预处理命令相关推荐

  1. c语言 常用命令,嵌入式基础—C语言(1)—vim编辑器的常用命令

    ~:家目录 $:提示符 [2] 开启终端 ctrl+shift+n:打开为当前目录 ctrl+alt+t:打开终端默认为家目录 [3] ls 浏览目录 ls   -a     浏览所有的文件,包括隐藏 ...

  2. g-git 相关命令 及其 基本原理探索(二):git 在工作中的常用命令操作 ,超级实用!!!

    上一篇git 基本原理对git的使用以及文件分布已经有了一个整体的了解. 本篇将对工作中常用的一些git 操作命令的操作进行总结归纳,方便今后查阅. 文章目录 1. 分离头指针 2. 通过HEAD 来 ...

  3. su命令切换到root用户_如何在Linux中使用su命令成为超级用户或root?

    su命令切换到root用户 Linux provides root account as superuser or Administrator. As root account has all pri ...

  4. 运行Java字节码和应用使用的命令名字为_在运行字节码文件中,使用java命令,一定要给出字节码文件的扩展名.class...

    [单选题]( )是供应链管理的核心,是供应链管理的总体规划及总体控制. [单选题]10. 汉末著名医学家( ),外科技术尤为精湛,首次将全身麻醉应用与外科手术.并模仿 "虎.鹿.熊.猿.鸟& ...

  5. c语言提供了三种预处理命令,9、C语言之预处理命令

    预处理命令 基本概念:ANSI C标准规定可以在C源程序中加入一些"预处理命令",以改进程序设计环境,提高编程效率. 这些预处理命令是由ANSI C同一规定的,但是它们不是C语言本 ...

  6. c语言有效的预处理命令,9、C语言之预处理命令(示例代码)

    预处理命令 基本概念:ANSI C标准规定可以在C源程序中加入一些"预处理命令",以改进程序设计环境,提高编程效率. 这些预处理命令是由ANSI C同一规定的,但是它们不是C语言本 ...

  7. C语言中的预处理详解

    目录 一.预处理的工作方式... 3 1.1.预处理的功能... 3 1.2预处理的工作方式... 3 二.预处理指令... 4 2.1.预处理指令... 4 2.2.指令规则... 4 三.宏定义命 ...

  8. Linux中常用的命令

    1.文件建立 touch file(文件的名字) 注意: touch不但可以建立文件也可以修改文件的时间戳 时间戳分为: atime:文件内容被访问的时间标识 mtime:文件内容被修改的时间标识 c ...

  9. Linux中常用的命令都是哪些单词的缩写

    作者:蓬岸 Dr.Quest 链接:https://www.zhihu.com/question/49073893/answer/114986798 来源:知乎 著作权归作者所有.商业转载请联系作者获 ...

最新文章

  1. PHP整理笔记八正则表达式
  2. JavaScript 操作 COM 控件
  3. shell 指令集锦
  4. js入门系列演示·数组
  5. 【PAT甲级 链表去重】1097 Deduplication on a Linked List (25 分) C++ 全部AC
  6. linux rar 文件名乱码,linux解压缩文件名乱码问题 亲测可用
  7. 任正非谈鸿蒙系统问题不大,任正非谈鸿蒙系统:两三年重建生态,有信心打造全球生态...
  8. Go 自动构建工具 dogo 代码已托管到 Git@OSC
  9. 登录权限验证token
  10. 无人机+AI人工智能可以实现哪些领域的场景应用?
  11. 【情报分享1234】来自海莲花组织的道歉,然后再给你扔了个恶意文档
  12. Matlab下载安装详细教程
  13. 三菱plc232数据线驱动下载_程序怎么上传下载?以西门子S7-200PLC为例为你讲解
  14. Emoji表情存入数据库报错:java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\xBD\xF0\x9F…'
  15. IDLE的介绍和使用
  16. Staking来袭,10亿级市场打开! | 火星总编时刻NO.31
  17. 1.0数据采集与预处理概述
  18. arch linux简体中文,Locale (简体中文)
  19. 基于SDR的智能反射面波束成形设计
  20. 传感器的低频响应和截止频率

热门文章

  1. 如何选择Python版本2还是3
  2. #define定义宏常量和宏函数
  3. 法官批准离婚申请 布兰妮正式恢复“单身”(图)
  4. Getting in Shape
  5. 【FPGA Verilog】如何捕获信号Posedge和Negedge?学习记录
  6. android最全面 笔试题71道题 详解
  7. qt Android 按键事件,QT无窗口状态下对键盘事件的监听
  8. 解析android:ellipsize=end属性无效的情况
  9. 江苏省计算机C语言考试记录
  10. Unity模型动画骨骼错位解决办法