1、什么是预处理器

  2、什么是预处理器指令

  3、预处理器指令

  4、宏指令

  5、宏函数

  6、宏函数的优缺点

  7、条件编译指令

1、什么是预处理器

  • 预处理器是一个程序,用来处理源程序中的预处理指令。

  • 一个程序在编译之前一般都要经过预处理。

2、什么是预处理器指令

  • 以“#”开头的指令叫预处理指令

  • 可以出现在任何位置,必须一行结束

  • 如果要换行,须得用"\"来连接两行内容

 

3、预处理器指令

  • 文件包含

#include <>#include “”

  • 宏定义

无参宏定义

有参宏定义

  • 条件编译

#if

#ifdef

#ifndef

#endif

#elif

#else

#undef

#if defined

4、宏指令

  宏相当于文本的替换操作

  • 语法格式:

-定义在函数的外面
-格式:#define PI 3.14

  PI为宏的文本内容 在编译前将PI的内容替换成3.14

5、宏函数

  • 语法格式: #define MianJi(r) PI*r*r

  宏函数只是文本,只是相当于做了内容替换的操作,注意参数是没有数据类型

6、宏函数的优缺点

  • 宏函数的优缺点

可以代码更简单、更容易,避免大量使用。

  • 宏函数注意事项

– 宏函数中的参数一定要用括号括起来,以防止替换后的优先级问题。

– 宏函数的整个表达式也需要用括号括起来,以防止宏函数参于表 达式的运算

– 宏函数中的多条语句时,应写成复合语句,以防止重复定义变量。

– 调用宏函数时,不要将++,--的表达式做为参数传递,可以先++,--后调用,或者,调用后++,--,以防止在宏函数中重复地 计算++,--

– 宏函数也可以调用另一个宏函数

7、条件编译指令

  • 在代码中设置编译条件 根据编译条件进行代码的编译并运 行。(跨平台)

  • 在编译文件的时候传入一个参数,根据参数就可以对代码进 行有选择的编译。

gcc -DZHAOBENSHAN main3.c

  • 条件指令

#if 如果 #ifdef 如果定义
#ifndef 如果没定义 #elif 如果 //else if

#else 否则 与 #if 对应关系
#endif 结束标识
#undef 取消宏和#define 定义宏

  • 编译方式

  根据参数编译

gcc -DXXX main.c

  根据宏值(参数)

#define ZHAOBENSHAN 1

  根据宏"值(逻辑)"进行编译

#if ZHAOBENSHAN==1

C语言基本语法——预处理器和预处理指令的更多相关文章

  1. C语言--- 字符串数组 、 预处理器和预处理指令 、 多文件编程 、 结构体

    1 输入一个姓名,判断是否是五虎上将. 1.1 问题 本案例需要使用交互的方式判断:用户从控制台输入一个名字,由程序判断该名字是否在五虎上将的名单中.五虎上将的名单是:GuanYu.ZhangFei. ...

  2. C Primer Plus之C预处理器和C库

    编译程序前,先由预处理器检查程序(因此称为预处理器).根据程序中使用的预处理器指令,预处理器用符号缩略语所代表的内容替换程序中的缩略语. 预处理器不能理解C,它一般是接受一些文件并将其转换成其他文本. ...

  3. 吴裕雄--天生自然C++语言学习笔记:C++ 预处理器

    预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理. 所有的预处理器指令都是以井号(#)开头,只有空格字符可以出现在预处理指令之前.预处理指令不是 C++ 语句,所以它们不会以分号(;)结尾 ...

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

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

  5. 前端知识体系之CSS及其预处理器SASS/LESS

    如果你是个前端设计师,很多时候我们都在写CSS,CSS是定义页面样式的脚本,并不是一种编程语言,只是一行行单纯的描述页面元素的样子,如果对英语熟练的话,它像说话一样简单,这里举个简单的例子: body ...

  6. Docs-.NET-C#-指南-语言参考-预处理器指令:#if 预处理指令

    ylbtech-Docs-.NET-C#-指南-语言参考-预处理器指令:#if 预处理指令 1.返回顶部 1. #if(C# 参考) 2018/06/30 如果 C# 编译器遇到 #if 指令,最终是 ...

  7. 《你必须知道的495个C语言问题》读书笔记之第8-10章:字符串、布尔类型和预处理器

    一.字符和字符串 1. Q:为什么strcat(string, '!')不行? A:strcat()用于拼接字符串,所以应该写成strcat(string, "!")." ...

  8. Koala – 开源的前端预处理器语言图形编译工具

    koala 是一个前端预处理器语言图形编译工具,支持 Less.Sass.Compass.CoffeeScript,帮助 Web 开发者更高效地使用它们进行开发.跨平台运行,完美兼容 Windows. ...

  9. Sass:一种CSS预处理器语言

    http://sass-lang.com/ Sass是一种CSS预处理器语言,通过编程方式生成CSS代码.因为可编程,所以操控灵活性自由度高,方便实现一些直接编写CSS代码较困难的代码. 同时,因为S ...

随机推荐

  1. Django:Admin,Cookie,Session

    一. Admin的配置 1.Admin基础设置 admin是django强大功能之一,它能够从数据库中读取数据,呈现在页面中,进行管理.默认情况下,它的功能已经非常强大,如果你不需要复杂的功能,它已经 ...

  2. JavaScript正则表达式总结

    同学们,今天给大家带来一篇正则表达式的总结,老规矩,先说下我们为什么要用正则?正则要用在什么地方? (个人理解的,大神轻喷) 正则很多时候要用于字符串操作,比如我们要把一个字符串里面的空格删除啊,替换 ...

  3. 40 最小的K个数(时间效率)

    题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,.   测试用例: 功能测试(输入的数组中有相同的数字:输入的数组中 ...

  4. fs

    yum install -y make expat-devel git gcc-c++ autoconf automake libtool wget python-devel ncurses-deve ...

  5. awk的总结

    入门总结 Awk简介 awk不仅仅时linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告.处理的数据可以是一个或多个文件,可以是来自标准输入,也可以通过管道获取标准输入,awk可 ...

  6. 2、链接数据库+mongodb基础命令行+小demo

    链接数据库并且打印出数据的流程:1.在CMD里面输入 mongod 2.在CMD里面输入 mongo 3.在输入mongodb命令行里面进行操作,首先输入 show dbs 来查看是否能够链接得上库4 ...

  7. HDU2161 Primes

    /* HDU2161 Primes http://acm.hdu.edu.cn/showproblem.php?pid=2161 数论 水题 注意输入截止条件是n<=0 */ #include ...

  8. BA-siemens-ppm模块在ALN层通信

    PPM作为新的扩展模块,有MS/TP通讯的能力,但是在常规设置的时候必须设置在PXC Modular下面,PPM上线也必须在PXC Modular上中超级终端设置,偶然通过一个项目实现了PPM挂载在A ...

  9. [Linux]第五部分-Linux系统管理员

    启动流程如下:1.加载BIOS信息,读取第一个启动设备代号2.读取第一个启动设备的Mbr引导程序的启动信息3.加载操作系统核心信息4.核心执行init程序并获取运行信息5.init执行 /etc/rc ...

  10. 经验之谈—OAuth授权流程图

    事实上我们在开发中,常常须要解决获得用户的一些特定的数据,比方:能够选择使用微博登陆.使用QQ登陆等等.然后我们间接的获得用户的头像.昵称等信息.这些都涉及到OAuth授权的内容 OAuth授权有这么 ...