宏定义

1、#define  <头文件名>                        //引用头文件
	例如:#define  _STDIO_H_      ==#include<stdio.h>
2、#define   <宏名>   < 数据(表达式)>       //宏定义<宏名>为<数据(表达式)>,在预处理时替换
	例如:#define  PI      3.1415             //在编译时,编译器会将字符串中的‘PI’除外的所有‘PI’出现的地方全部替换为3.1415
		   #define   H    (a*b)             //在编译时,编译器会将字符串中的‘H’除外的所有‘H’出现的地方全部替换为(a*b)
3、#define   <宏名>(<参数名>)   <表达式>      //宏定义函数<宏名>加<参数>,编译时会替代成<表达式>
		例如:#define max(a,b)  ((a)>(b)?(a):(b)) //这是大家经常会遇到的一个求较大值的函数(暂且让我称它为函数吧)
	/*(1)与一般函数相比:宏函数会在编译时直接替代,不用传参,没有内存空间,相对省资源;宏函数编译时编译器不会检查语法等错误,若出现错误,要人工检查;但是宏函数不限制处理的参数数据类型,int能用,float也能用,一般函数则只能适应定义时的参数类型,若要多重适应,还得用函数重载,编码先对纠结。
	(2)与内联函数相比:内联函数也是在编译时直接带到调用处,也不用传参数;但是内联函数在编译时,编译器会检查其语法等错误;内联函数除了没有内存占用,没有调用传参外,其余与一般函数一样,在调用时也受定义的参数数据类型限制。
	(3)与函数模板相比:都是能适应多中数据类型的处理,(我对函数模板还没学好,回头再写)*/
4、#undef  <宏名>		  //解除<宏名>的宏定义,(若同一个宏名被多次定义,编译时会报错,需解除宏定义,再重新宏定义)
	例如:#undef  H      //‘H’已经被宏定义过了,现在要解除'H'的宏定义
5、#if define  <宏名>
      XXXXXX
      #endif             //如果<宏名>已经被定义过了,则执行‘XXXXXX’语句,否则,直接跳到#endif后面继续执行
	例如:#if  define  H //如果‘H’被宏定义过了(一般用于重新定义)
		    #udef     H  //解除‘H’的宏定义
		    #define      H    345//将‘H’定义为‘345’
		    #endif
6、#elif   <条件>		 //如果前面的条件不为真,则编译后面的代码
7、#if !define  <宏名>
      XXXXXX
      #endif             //如果<宏名>未被定义过了,则执行‘XXXXXX’语句,否则,直接跳到#endif后面继续执行
	例如:#if  define  H //如果‘H’未被宏定义过(防止重定义)
		   #define      H    345//将‘H’定义为‘345’
		   #endif
8、#ifndef   <宏名>			//与5基本相同
      XXXXXX
      #endif                  //如果<宏名>未被定义过了,则执行‘XXXXXX’语句,否则,直接跳到#endif后面继续执行
	例如:#ifndef  H		   //如果‘H’未被宏定义过(防止重定义)
		   #define      H    345	//将‘H’定义为‘345’
		   #endif
9、#error    <报错信息>                         //一般和条件判断结合使用,用于给定报错信息
	例如:#ifndef __cplusplus                   //当编译器不是C++编译器时,报错
          #error 亲,您当前使用的不是C++编译器噢!
          #endif
          #include <stdio.h>
          int main()
          {
              printf("Hello,World!");
              return 0;
          }
</span>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值