ToB企服应用市场:ToB评测及商务社交产业平台
标题:
【C语言】预处理详解(上卷)
[打印本页]
作者:
汕尾海湾
时间:
2024-6-11 20:40
标题:
【C语言】预处理详解(上卷)
前言
预处理也是C语言中非常重要的存在。那么就详细地来了解一下吧。
预定义符号
C语言设置了一些预定义符号,可以直接利用,预定义符号也是在预处理期间处理的。
1 __FILE__ //举行编译的源文件
2 __LINE__ //文件当前的行号
3 __DATE__ //文件被编译的日期
4 __TIME__ //文件被编译的时间
5 __STDC__ //假如编译器遵循ANSI C,其值为1,否则未定义
利用演示:
(这个警告说明VS并没有完全遵循ANSI C )
#define定义常量
基本语法:
#define name stuff
复制代码
name是名字,stuff是内容。
利用演示:
在预编译阶段
,M出现的地方都会被更换回2077,并且把#define M 2077这句删除。
其实,我们前面的预定义符号也是同样的处理。在
预编译阶段
,预定义符号出现的位置会更换为内容。
#define也可以定义
字符常量
:
如许写
数组
也是可以的,不会报错:
由于在预编译阶段就已经把M更换为77了。
我们甚至可以为了
简写
而利用#define定义常量:
以是它的利用其实是五花八门的,甚至可能会有一些奇葩的写法。
还可以定义一整段代码:
不外,我们可以通过续行符\,改造一下:
注意续行符在利用时\背面什么都不要加。\背面跟的是回车键,其实是转义了。
利用分号?
注意,#define定义标识符的时间,背面不要加
分号
。有时间加上也不会有太大题目,但是不发起。加上可能会导致题目。
举个例子:
这个更换的效果其实相称于:
int a = 2077;
;
复制代码
也就是相称于:
int a = 2077;
;
复制代码
两条语句,后一条是空语句。
但是如许的不出题目是偶然的。
但假如是如许去写:
这就出题目了。由于它相称于:
printf("%d\n",2077;);
复制代码
以是给#define定义的常量内容背面加上;是百害无一利的,最好不要这么做。
还有时间这种错误更加隐晦:
它相称于:
#define定义宏
为了突出宏的重要性,笔者决定以单独一篇博客的方式来讲解宏,敬请等待。
到此,预处理详解(上卷)竣事,祝阅读愉快^_^
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4