程序预处理
目录
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