【C语言】预处理详解(上卷)

打印 上一主题 下一主题

主题 556|帖子 556|积分 1668

前言

预处理也是C语言中非常重要的存在。那么就详细地来了解一下吧。
预定义符号

C语言设置了一些预定义符号,可以直接利用,预定义符号也是在预处理期间处理的。
   1        __FILE__        //举行编译的源文件
  2        __LINE__        //文件当前的行号
  3        __DATE__        //文件被编译的日期
  4        __TIME__        //文件被编译的时间
  5        __STDC__        //假如编译器遵循ANSI C,其值为1,否则未定义
  利用演示:
 

(这个警告说明VS并没有完全遵循ANSI C )
 


#define定义常量

基本语法:
  1. #define name stuff
复制代码
name是名字,stuff是内容。
利用演示:


在预编译阶段,M出现的地方都会被更换回2077,并且把#define M 2077这句删除。 
其实,我们前面的预定义符号也是同样的处理。在预编译阶段,预定义符号出现的位置会更换为内容。
#define也可以定义字符常量

 如许写数组也是可以的,不会报错:

由于在预编译阶段就已经把M更换为77了。
我们甚至可以为了简写而利用#define定义常量:
 

以是它的利用其实是五花八门的,甚至可能会有一些奇葩的写法。
还可以定义一整段代码:

不外,我们可以通过续行符\,改造一下:
 

注意续行符在利用时\背面什么都不要加。\背面跟的是回车键,其实是转义了。 
利用分号?

注意,#define定义标识符的时间,背面不要加分号。有时间加上也不会有太大题目,但是不发起。加上可能会导致题目。
举个例子:

这个更换的效果其实相称于:
  1. int a = 2077;
  2. ;
复制代码
 也就是相称于:
  1. int a = 2077;
  2. ;
复制代码
两条语句,后一条是空语句。
但是如许的不出题目是偶然的。
但假如是如许去写:

这就出题目了。由于它相称于:
  1. printf("%d\n",2077;);
复制代码
 以是给#define定义的常量内容背面加上;是百害无一利的,最好不要这么做。
 还有时间这种错误更加隐晦:

它相称于:
 

 #define定义宏

 为了突出宏的重要性,笔者决定以单独一篇博客的方式来讲解宏,敬请等待。

到此,预处理详解(上卷)竣事,祝阅读愉快^_^

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

汕尾海湾

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表