Skip to content

程序预处理

目录


8 位(b) == 1 字节(B)

头文件

包含头文件

c
// 使用<>编译时只在系统库里找
#include <stdio.h>

// 使用""时先在当前文件夹中找,找不到再去系统文件中找(会花很多时间,尤其是文件夹比较大的时候)
// 自己写的文件用#include"文件名"来包含
#include "文件名"

可以把函数写在其他文件中调用,也可以在文件中提前定义函数(这样 main 就能写在最前面了)

头文件互相包含解决方法

c
//法1:
#ifndef __SOMEFILE_H__
#define __SOMEFILE_H__//声明语句
//头文件内容
#endif
//法2:
#pragma once//只能包含一次

头文件快捷获取

c
// 万能头
# include<bits/stdc++.h>

// 输入输出流
// 输入输出控制符 => iomanip
# include<iostream>

// C输入输出流
// vc++6.0中可添加stdio.h来使用printf();和scanf();
# include<stdio.h>

// STL sort(函数)
# include<algorithm.h>
# include<algorithm>

// string
# include<string.h>
# include<string>

// 数学公式
# include<math.h>
# include<cmath>
pow(a,b)//a的b次幂
sqrt()//取平方根

// 时间函数
# include<time.h>
# include<ctime>
srand((unsigned int)time(NULL));//添加随机数种子

部分常用的头文件介绍

define | 宏(C)

EOF 被定义为-1

无参数宏:

c
#define <标识符> <字符或字符串>
#define PI 3.14 // 预编译时用3.14代替该源文件改行后所有的PI(不包括引号里的)

替换时不做计算和语法检查:

c
#define M 1+1
8*m*3   // 变成8*1+1*3

终止其作用域

c
#undef PI

同一文件中同名宏不得赋值 2 次

带参数的宏:

c
#define M(a,b) a*b //中间一定要有空格,M(a,b)中间一定不能有空格
mm=M(2+9,3+1);//编译后mm=2+9*3+1;

#define M(a,b) (a)*(b)
mm=M(2+9,3+1);//编译后mm=(2+9)*(3+1);

const 定义常量

在 C++中,const 被推荐用于代替#define,因为#define不会进行类型检查,而const会。

c
const int pi=3.14;//常数变量(不可变)

条件编译

c
//eg1:
#ifdef <宏名>//若已经定义了宏则编译该程序段
	<程序段>
#else
	<程序段>
#endif

//eg2:
#ifndef <宏名>//若未定义了宏则编译该程序段
	<程序段>
#else
	<程序段>
#endif

//eg3:
#ifdef <常量表达式>//若表达式非0则编译该程序段
	<程序段>
#else
	<程序段>
#endif

Copyright © 2022 田园幻想乡 浙ICP备2021038778号-1