宏#define的三种基本定义方式:固定值,表达式,运算符。

简介: 宏#define的三种基本定义方式:固定值,表达式,运算符。

#define:

       define是C语言中的预处理命令,预处理命令以“#”开头,比如我们经常写的代码#include<stdio.h>也是预处理命令。

       #define用于宏定义,作用是方便程序段的定义和修改,可以将一个变量强制定义为你想要的值,它能提高源代码的可读性,为编程提供方便。

       宏定义又分为无参宏定义(不带参数)和带参宏定义(带有参数)。

预处理是什么?

预处理就是指计算机在进行编译运行之前做的工作。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。

无参宏定义:固定值,表达式

固定值:(直接上代码)

格式:#define 标识符 变量

#include<stdio.h>
#define SUM 3.1415926  //宏定义,相当于SUM=3.1415926
int main()
{
  int r=3;
  float face;
  face=r*r*SUM;   //直接引用SUM
  printf("圆的面积为:%.2f",face); 
  return 0; 
}


注意:中间为空格,最后不要加“ ; ”,加了分号连分号一起替换。

如下面这段代码是可以实现的:

#include<stdio.h>
#define SUM 3.1415926; //等价于SUM=3.1415926;
int main()
{
  int r=3;
  float face;
  face=r*r*SUM  //分号在宏定义处
  printf("圆的面积为:%.2f",face); 
  return 0; 
}

注:如果要在这样写,变量名必须写在一个语句的最后。如face=r*r*SUM  ,而face=SUM*r*r是错误的,所以注意宏定义后面最好不要去加分号。


运算符:

格式:#define  标识符  运算符号

#include<stdio.h>
#define SUM 3.1415926
#define C *  //C等价于*
int main()
{
  int r=3;
  float face;
  face=r C r C SUM; //等价于face=r * r * SUM
  printf("圆的面积为:%.2f",face);
  return 0; 
}

这个太简单了,来点有难度的


带参宏定义:表达式

格式:#define  标识符  表达式

如:#define   MAY(a,b)   a*b+a+b

#include<stdio.h>
#define MAY(a,b) a*b+a+b  //MAY=a*b+a+b
int main()
{
  int x=2,y=3,face;
  face=MAY(x,y);  //等价于x*y+x+y
  printf("运算结果为:%d",face); 
  return 0; 
}

再举个列子,如:#define MAY(a,b)  a>b?a:b

#include<stdio.h>
#define MAY(a,b) a>b?a:b 
int main()
{
  int x=2,y=3,face;
  face=MAY(x,y);
  printf("运算结果为:%d",face); 
  return 0; 
}


如果在比较长的代码中,不需要这个宏定义了,怎么结束它呢?

就这样引出了终止符#undef

格式:#undef  标识符

undef后面的标识符表示你所要终止的宏。程序一旦运行到它,之后的这个宏将不再起作用,再使用,编译将会报错。


相关文章
|
机器学习/深度学习 人工智能 安全
论文介绍:从黑盒生产语言模型中提取信息的模型窃取攻击
【2月更文挑战第22天】论文介绍:从黑盒生产语言模型中提取信息的模型窃取攻击
555 6
论文介绍:从黑盒生产语言模型中提取信息的模型窃取攻击
|
8月前
|
自然语言处理 搜索推荐 安全
阿里云建站产品怎么选?云·速成美站与云·企业官网对比与选择参考
阿里云为客户提供云·速成美站、云·企业官网及个性化定制开发建站等多种建站模式,其中云·速成美站与云·企业官网是两款热门建站产品,它们均基于阿里云基础设施构建,但在目标用户、服务模式、功能深度及适用场景上存在明显区别。本文将从产品定位、核心功能、服务模式、价格体系及技术架构等方面展开对比,以供选择参考。
|
机器学习/深度学习 人工智能 算法
国内首家! 阿里云人工智能平台 PAI 通过 ITU 国际标准测评
阿里云人工智能平台 PAI 顺利通过中国信通院组织的 ITU-T AICP-GA国际标准和《智算工程平台能力要求》国内标准一致性测评,成为国内首家通过该标准的企业。阿里云人工智能平台 PAI 参与完成了智算安全、AI 能力中心、数据工程、模型开发训练、模型推理部署等全部八个能力域,共计220余个用例的测试,并100%通过测试要求,获得了 ITU 国际标准和国内可信云标准评估通过双证书。
国内首家! 阿里云人工智能平台 PAI 通过 ITU 国际标准测评
|
移动开发 安全 测试技术
全新完整版H5商城系统源码
H5商城系统设置是实现商城基本功能的核心部分,涵盖了从网站配置、短信和支付配置,到商品、工单、订单、分站和提现管理等多个模块的设置。以下是详细的设置指南,帮助您快速上手并高效管理商城系统。 测试环境:Nginx+PHP7.0+MySQL5.6
478 2
|
开发框架 .NET C#
如何判断一个 Dot Net 程序是 32 位还是 64 位?
如何判断一个 Dot Net 程序是 32 位还是 64 位?
|
Linux
linux 删除乱码文件名的文件
【8月更文挑战第26天】当遇到文件名显示为乱码,导致无法正常通过键盘输入文件名进行删除操作时,可以利用鼠标的复制功能配合`rm`命令实现删除。对于文件夹的删除,可使用`rm -rf 目录名`。然而,有时这种方式仍无法删除某些特殊乱码文件,这时可以通过获取文件的i节点号(使用`ls -i`或`ll -i`命令查看)并执行`find -inum [节点号] -delete`来进行删除。这种方法特别适用于处理那些因文件名问题而难以删除的情况。
905 2
|
网络协议 网络性能优化 流计算
RTSP协议、RTMP协议、HTTP协议的区别
理论上RTSP RTMPHTTP都可以做直播和点播,但一般做直播用RTSP RTMP,做点播用HTTP。做视频会议的时候原来用SIP协议,现在基本上被RTMP协议取代了。 RTSP、 RTMP、HTTP的共同点、区别 共同点: 1:RTSP RTMP HTTP都是在应用应用层。
4316 0