什么是c语言预处理命令行,C/C++编程笔记:C语言预处理命令是什么不要以为你直接写#就行!...

C/C++编程笔记:C语言预处理命令是什么不要以为你直接写#就行!

b064376a16323b8e89232c32196ce15d.png很多小伙伴在自己写代码的时候,已经多次使用过#include命令。使用库函数之前,应该用#include引入对应的头文件。其实这种以#号开头的命令称为预处理命令。

9c463a855ae06562fdb4b0ceb0f7e7c5.png

这就需要在编译之前先对源文件进行处理:如果检测到是 VS,就保留 a() 删除 b();如果检测到是 GCC,就保留 b() 删除 a()。

这些在编译之前对源文件进行简单加工的过程,就称为预处理(即预先处理、提前处理)。

预处理主要是处理以#开头的命令,例如#include 等。预处理命令要放在所有函数之外,而且一般都放在源文件的前面。

预处理是C语言的一个重要功能,由预处理程序完成。当对一个源文件进行编译时,系统将自动调用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。

编译器会将预处理的结果保存到和源文件同名的.i文件中,例如 main.c 的预处理结果在 main.i 中。和.c一样,.i也是文本文件,可以用编辑器打开直接查看内容。

C语言提供了多种预处理功能,如宏定义、文件包含、条件编译等,合理地使用它们会使编写的程序便于阅读、修改、移植和调试,也有利于模块化程序设计。

9c463a855ae06562fdb4b0ceb0f7e7c5.png//不同的平台下引入不同的头文件

#if_WIN32//识别windows平台

#include#elif__linux__//识别linux平台

#include

#endifintmain(){//不同的平台下调用不同的函数

#if_WIN32//识别windows平台

Sleep(5000);

#elif__linux__//识别linux平台

sleep(5);#endifputs("http://c.biancheng.net/");

return0;

}

#if、#elif、#endif 就是预处理命令,它们都是在编译之前由预处理程序来执行的。这里我们不讨论细节,只从整体上来理解。

对于 Windows 平台,预处理以后的代码变成:

#include

#includeintmain(){

Sleep(5000);

puts("http://c.biancheng.net/");

return0;

}

对于 Linux 平台,预处理以后的代码变成:

#include#includeintmain(){

sleep(5);

puts("http://c.biancheng.net/");

return0;

}

你看,在不同的平台下,编译之前(预处理之后)的源代码都是不一样的。这就是预处理阶段的工作,它把代码当成普通文本,根据设定的条件进行一些简单的文本替换,将替换以后的结果再交给编译器处理。

现在,你懂了吗?

微信公众号:C语言编程学习基地,学习C/C++编程知识,欢迎关注笔者哦~

其实做为一个编程学习者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个C语言C++交流Q群1108152000,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。

C/C++编程笔记:C语言预处理命令是什么不要以为你直接写#就行!相关教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值