https://m.toutiao.com/is/JTpvb14/

前言

上一章节主要讲解C语言文件操作,本章节主要讲解C语言预处理和宏定义。

C语言预处理

在C语言中,预处理指令是在实际源代码编译之前执行的步骤。它不是编译的一部分。C语言中的预处理程序指令用于定义和替换文本中的标记,还用于将其他文件的内容插入源文件。

当我们尝试编译程序时,先执行预处理程序命令,然后再编译程序。每个预处理器命令均以#符号开头。

预处理不是语句,故预处理命令不需要(;)结束

专栏

随到随学全套C语言入门精品文档

作者:C语言基础

¥29.9

57人已购

查看

专栏

C语言入门精品视频教程合集

作者:C语言基础

¥99.9

75人已购

查看

C语言宏定义

#define

用于在C编程语言中创建符号常量(称为宏)。此预处理器命令也可以与参数化宏一起使用。宏替换

宏函数

案例程序如下:

带语句的宏以及多行宏的编写

C语言销毁宏定义

#undef

用于销毁已经使用#define创建的宏。如下测试代码:

C语言宏判断

#ifdef

如果已定义宏,则#ifdef返回TRUE;如果未定义宏,则返回FALSE。

#ifndef

如果未定义指定的宏,则#ifndef返回TRUE,否则返回FALSE。

#endif

和#ifdef与#endif成对使用

如下测试代码:

条件编译

#if

#if使用指定宏的值进行条件编译。

#else

#else是#if的替代方法。

#elif

#elif是#else,在一条语句中后接#if。

#endif

#endif用于终止预处理器条件宏。

测试案例如下:

注意点:

预处理是在编译期完成的,所以在处理变量的时候一定要注意,如下测试代码:

其他

#include

#include用于将特定的头文件插入C程序。

#error

#error用于在stderr上打印错误消息。

#pragma

#pragma用于向编译器发出特殊命令。

如:包含静态库资源,内存对齐方式。

C语言有预定义的宏

它们如下所示...__ DATE __:当前日期,

__ TIME __:当前时间

__ FILE __:这包含当前文件名。

__ LINE __:包含当前行号。

__ STDC __:编译器是ANSI,值为1。

如下测试代码:

尾言

作业:使用宏,实现宏链表。

哪里有什么老天的眷顾,所谓的幸运和成功都源自你自身的努力和付出。请记住,你现在多走的每一步都在拉开着你和别人的差距。要做,就做生活的强者。

错误处理 宏 c语言,C语言零基础教程之预处理和宏定义篇相关推荐

  1. B站百万播放量Java零基础教程视频(适合Java 0基础,Java初学入门),史上最细Java零基础教学视频

    是否还在为学习Java如何入门而烦恼? 是否还在为Java软件如何安装而烦恼? 是否还在找寻着适合零基础的Java视频教程? 动力节点教学总监老杜159集课堂实录Java零基础视频教程,从初学者角度出 ...

  2. 麒麟子Javascript游戏编程零基础教程大纲

    大家好,我是麒麟子, 开源项目<幼麟棋牌-四川麻将>(泄漏版叫 <达达麻将>)作者,成都幼麟科技创始人. 开源项目地址(Github与Gitee同步更新): Github ht ...

  3. Make 命令零基础教程

    Make这个词,英语的意思是"制作".Make命令直接用了这个意思,就是要做出某个文件.比如,要做出文件a.txt,就可以执行下面的命令. $ make a.txt 但是,如果你真 ...

  4. OpenMV零基础教程

    一.资料导航 "工欲善其事,必先利其器".在正式学习OpenMV之前,你必须知道一条或几条OpenMV的学习途径.这里推荐星瞳科技的中文官网教程,这个教程里面包括了OpenMV I ...

  5. Python零基础教程

    Python 零基础教程 介绍 Python,一个简单而强大的编程语言.有人说它是女神的语言,也有人认为它是所有程序员的头等选项. 用过这种语言或者学过其他任何一门编程语言的开发者都 能轻松上手Pyt ...

  6. 《网络安全》零基础教程-适合小白科普

    <网络安全>零基础教程 目录 目录 <网络安全>零基础教程 第1章 网络安全基础 什么是网络安全 常见的网络安全威胁 网络安全的三个基本要素 网络安全的保障措施 第2章 网络攻 ...

  7. vue2+vue3小白零基础教程—vue2篇,全网2021最详细教程

    vue教程 提示:Vue3系列请参考Vue2+Vue3小白零基础教程-vue3篇文章,本文为vue2篇. 1. Vue核心 1.1 Vue简介 1.1.1 Vue是什么 一套用于构建用户界面的渐进式J ...

  8. MySQL零基础从入门到精通(函数篇)

    MySQL零基础从入门到精通(函数篇) 在MySQL中,为了提高代码重用性和隐藏实现细节,MySQL提供了很多函数.函数可以理解为别人封装好的模板代码. 分类 聚合函数 数学函数 字符串函数 日期函数 ...

  9. (尚硅谷java零基础教程)学习笔记day7/8-数组

    1.数组的概述 1.1 定义 数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理. 1.2 数组的相关概念 数组名 元素 数组的索引 ...

最新文章

  1. Elasticsearch环境搭建
  2. 关于bind1st和bind2nd
  3. 初级Java开发面试必问项!!! 标识符、字面值、变量、数据类型,该学学了!
  4. junit测试类叫什么名字_使用Junit测试名称
  5. LeetCode 1458. 两个子序列的最大点积(动态规划,类似编辑距离)
  6. 跨林迁移用户、计算机、邮箱(1)
  7. 程序员最常说的那些口头禅
  8. android横向滑动控件,Android学习——HorizontalScollview水平滚动控件
  9. Splash args 属性
  10. 【路径规划】基于matlab GUI粒子群算法机器人避障路径规划【含Matlab源码 923期】
  11. 吴恩达机器学习视频笔记记录(第2、5、7、8章)
  12. js实现简易拖拽图片验证功能
  13. 字谜游戏(b)C语言
  14. UE4编译错误:Unable to delete XXX
  15. 解决Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin
  16. 游戏首选高性能台式机显示器,240hz的刷新率够吗?
  17. android高仿输入法,仿ios输入法
  18. 基于golang的爬虫demo,爬取微博用户的粉丝和关注者信息
  19. c语言api获取百度地图,H5调用百度地图API获取地理位置
  20. 卷积神经网络 svm分类器_使用卷积神经网络的狗品种分类器

热门文章

  1. P3258[JLOI2014]松鼠的新家(LCA 树上差分)
  2. 粒子群算法之01背包问题(C语言实现)
  3. Dynamic ARP Inspection(动态ARP检测)功能,简称DAI
  4. 串的置换操作Replace(S,T,V)的算法
  5. Python 3 内置函数 - `setattr()`函数
  6. 5V升压充电8.4V芯片HU5914
  7. 中国Azure新数据中心(区域)正式商用
  8. VUE 表格设置序号
  9. 2016年8月18日 星期四 --出埃及记 Exodus 16:19
  10. 2016年8月13日 星期六 --出埃及记 Exodus 16:14