预处理

来源:互联网 发布:艺术网站源码 编辑:程序博客网 时间: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;
}













 

   

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 hp打印机卡了纸怎么办 华为荣耀9进水了怎么办 小米5x屏幕脱胶怎么办 小米5x后盖松动怎么办 苹果手机没电了怎么办 荣耀9的后盖裂了怎么办 手机一直在开机画面怎么办华为 华为手机一直显示开机画面怎么办 华为p7手机开不了机怎么办 华为荣耀8弯了怎么办 手机壳掉漆了怎么办 华为5a手机音量小怎么办 华为5a手机声音小怎么办 苹果屏幕磨花了怎么办 白色磨砂手机壳脏了怎么办 胶皮手机壳变黄怎么办 手机壳边缘黑了怎么办 手机壳磨黑了怎么办 iphon8原装后壳碎裂怎么办 皮的手机壳发黄怎么办 荣耀手机一直在开机画面怎么办 玻璃手机壳碎了怎么办 华为6x信号不好怎么办 昂达平板v819i刷成砖了怎么办 华为5x忘记密码怎么办 荣耀8开不了机怎么办 华为5s死机了怎么办 华为重启后忘了解锁密码怎么办 华为mate.9上网速度慢怎么办 华为mate10上网速度慢怎么办 四核豌豆2变砖怎么办 苹果32g不够用怎么办 移动4g网络卡怎么办 移动4g网非常卡怎么办 移动4g卡网速慢怎么办 手机移动4g网卡怎么办 华为手机摄像头进灰怎么办 美图t8忘记密码怎么办 华为mate7忘记开机密码怎么办 华为mate9开机密码忘记怎么办 华为手机系统更新失败怎么办