CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛

c++宏的使用-源码交易平台丞旭猿

一、宏的作用

在 C/C++中,宏的作用主要在于字符串替换。

二、宏的使用方法

1、简单宏定义

无参宏的宏名后不带参数

其定义的一般形式为:

define 标识符 字符串

示例

// 不带参数的宏定义
define MAX 10

注意:不要在宏定义中放置任何额外的符号,比如”=”或者尾部加”;”使用define来为常量命名一些优点:

  • 程序会更易读。一个认真选择的名字可以帮助读者理解常量的意义;
  • 程序会更易于修改。我们仅需要改变一个宏定义,就可以改变整个程序中出现的所有该常量的值;
  • 可以帮助避免前后不一致或键盘输入错误;
  • 控制条件编译;
  • 可以对C语法做小的修改;

2、带参数的宏

带参数的仍要遵循上述规则,区别只是宏名后面紧跟的圆括号中放置了参数,就像真正的函数那样。

使用方法:

define <宏名>(<参数列表>) <宏体>

注意参数列表中的参数必须是有效的c标识符,同时以,分隔算符优先级问题:使用示例:

define COUNT(M) M*M
int x=5;
print(COUNT(x+1));
print(COUNT(++X));
//结果输出:11   和42 而不是函数的输出36

注意:

  • 预编译器只是进行简单的文本替换,COUNT(x+1)被替换成COUNT(x+1x+1),5+15+1=11,而不是36
  • CUNT(++x)被替换成++x*++x即为6*7=42,而不是想要的6*6=36,连续前置自加加两次

解决办法:

  • 用括号将整个替换文本及每个参数用括号括起来print(COUNT((x+1));
  • 即便是加上括号也不能解决第二种情况,所以解决办法是尽量不使用++,-等符号;

三、多行的宏

宏定义中允许包含两行以上命令的情形,此时必须在最右边加上\且该行\后不能再有任何字符,连注释部分都不能有,下面的每行最后的一定要是\,\后面加一个空格都会报错,更不能跟注释。

include  
include 

include  
using namespace std; 


define CHARTOSTRING(val,str)\ 
{\ 
 stringstream sst;\ 
 sst << val;\ 
 str = sst.str();\ 
} 


int main(void) 
{ 
 char val = a; 
 string str; 
 CHARTOSTRING(val,str); 
 cout << str << endl; 
 return 0; 
}

str就是”a”。就是将字符a转为字符串a。

声明:本文部分素材转载自互联网,如有侵权立即删除 。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容