预处理
来源:互联网 发布:艺术网站源码 编辑:程序博客网 时间:2024/05/16 18:41
1.内联函数:
在调用函数时,一般会增加系统开销,如:参数传递、跳转控制、返回结果等额外操作都需要系统内存和执行时间
内联:在函数调用时使用函数体替换,因此会增加空间开销,而在时间上不像一般函数调用时那么大
inline in add(int x,int y){
................
}
注意几点;
(1)不含有循环语句和开关语句
(2)内联函数的定义必须出现内联函数第一次被调用之前
2.产生错误信息命令:#error --------强制编译器停止编译,并输出一个错误信息,主要用于程序调试
#error 错误信息
注意:错误信息不用双引号括起来
3.修改编译器设置命令:#pragma
4重置行号和文件命令:#line
#line number "filename"
5.预定义宏名
_ _ DATE_ _:当前源程序的创建日期;
_ _FILE_ _:当前源程序的文件名称(包括盘符和路径)
_ _LINE_ _:当前被编译代码的行号;
_ _STDC_ _:返回编译器是否巍峨标准C,若其值为1表示符合标准C,否则不是标准C
_ _TIME_ _:当前源程序的创建时间;
6.文件包含指令
#include< >
#include" "
7.条件编译指令 --------用于对于源代码的各部分有选择地进行编译。采用条件编译,可以提高程序的适用性,缩小目标代码的大小
也可以使用条件编译使程序的移植更加方便
(1)#if、#else、#endif命令
#if 常量表达式
程序段1
#else
程序段2
#endif
(2)#elif
#if 常量表达式1
程序段1
#elif 常量表达式2
程序段2
....
#elif 常量表达式n
程序段n
#else
程序段m
#endif
可以嵌套,可用于程序调试
************************************************************************************************************************************************************************************
#define OS WIN
#if OS==WIN
#include"win.h"
#elif OS==LINUX
#include"linux.h"
#elif OS==MAC
#include"mac.h"
#endif
(3)#ifdef、#ifndef命令
(4)使用#difined和#undef
#if defined 标识符
#if ! define 标识符
8.宏定义:
(1)无参数宏定义:
(2)有参数宏定义
#define 宏名(形参表) 字符串
#define FUN (A,B) 2*A*B
y=FUN(3,5);
则相当于;
y=2*3*5;
9.#undef命令
10.预处理操作符#和##
(1)# --------可以使用操作符#在字符串中输出参数实参
#define AREA(X,Y) printf("长为"#x",宽为"#y"的长方型的面积:%d\n",(x)*(y));
可以如下使用:
int i=3,j=5;
AREA(i,j);
输出结果: 长为i,宽为j的长方型的面积:15
2.操作符## -------可以用来在带参数宏中替换部分内容
#define FUNC(n) oper##n
预处理后:
oper1
********************************************************************************************
#include<stdio.h>#include<stdlib.h>
#define FUNC(n) oper##n
int oper1(int ,int);
int oper2(int ,int);
int main()
{
int a,b,r;
printf("输入两个参加运算的两个数:") ;
scanf("%d%d",&a,&b) ;
r=FUNC(1)(a,b);
printf("加运算结果:%d\n",r);
r=FUNC(2)(a,b);
printf("减运算结果:%d\n",r);
return 0;
}
int oper1(int a,int b)
{
return a+b;
}
int oper2(int a,int b)
{
return a-b;
}