C++预处理指令详解(上)

在C++中,有许多的预处理指令,它们都有一个特点:在编译时处理,下面是对它们的详解:

include
它的功能是嵌入一个文件,语法有两种:

#include <文件名>
#include "文件名"

第一种是调用库头文件,常见的库头文件有:

#include <cassert> //assert宏
#include <cctype> //字符函数
#include <cerrno> //错误
#include <cfloat> //浮点
#include <ciso646> //没用的
#include <cmath> //数学
#include <cstdarg> //可变参数(如printf)
#include <cstddef> //宏定义
#include <cstdio> //标准输入输出
#include <cstdlib> //system、rand、srand等
#include <cstring> //字符串
#include <ctime> //时间
#include <cstdbool> //布尔型
#include <cstdint> //整型
#include <cwchar> //宽字符型
#include <algorithm> //算法
#include <complex> //复合型
#include <fstream> //文件输入输出
#include <iomanip> //流操纵器
#include <iostream> //cin、cout
#include <map> //map
#include <memory> //内存
#include <queue> //队列
#include <stack> //栈
#include <vector> //向量
#include <conio.h> //getch、putch、kbhit等
#include <windows.h> //一些神奇的函数
#include <bits/stdc++.h> //万能头

如果你用的是DEV-C++ 4.8.1,库函数路径为C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++,如果是DEV-C++ 4.9.2,C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++。

第二种是自定义头文件,假如该头文件与源程序在同一个文件夹里,那么可以直接用文件名,否则得指定路径。

PS:
1~include后面不一定要加空格,可以直接#include<文件名>哦!
2~conio.h、windows.h、bits/stdc++.h在一些旧版G++不能用。
3~不一定要include头文件,include一个txt也可以哦!

define:

它的功能是定义一个宏常量,语法为:

#define 常量名 常量值

你一定会发现,它没有类型,这也是宏定义的缺点(包括宏函数),当然,宏定义也有优点,就是看起来高级,而且有些编译器预定义的宏常量非常有用:

_VER_ //编译器版本
_FILE_ //正在编译的文件
_TIME_ //编译时的时间
_DATE_ //编译时的日期
_WINDOWS_ //如果该宏有定义,那么就代表是Windows系统
__cplusplus //C++版本

if、elif、else、endif:

if就是判断,准确来说是条件编译,在预处理中是比较复杂的,if后面一定要有一个endif,endif与if之间就是语句,可以添加elif(else if)或else,但要注意,if与elif或else之间不能有endif,要是不懂的话,可以把endif理解成大括号就懂了。

下面这个C++程序应该改写成这样:

if(1==2)
{
输出1;
输出2;
}
else if(1==3)
{
输出1;
输出3;
}
else
{
输出5;
}
#if 1==2
输出1;
输出2;
#elif i==3
输出1;
输出3;
#else
输出5;
#endif

error:

功能是弹出错误消息,要是你把#error hhh…Ctrl+V到一个人的iostream、cstdio、cmath等各种头文件里,别人就用不了C++了,一编译就错误…

warning:

功能是弹出警告消息,下面是WINDOWS检查程序:

#include<Windows.h>
#include<cstdlib>
#ifdef _WINDOWS_
#warning OK!
#else
#warning No Windows
#endif
int main()
{
	return 0;
}

此外还有很多预处理指令,留到下次再讲解!
bye-bye!(记得点赞~)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值