c++ "#"代表什么意思

#defineCS_OPENING(i)(P_2D_SPABOP##i)P_2D_SPABOP是个宏,请问它后面跟的2个#号代表什么意思?... #define CS_OPENING(i) (P_2D_SPABOP##i)
P_2D_SPABOP是个宏,请问它后面跟的2个#号代表什么意思?
展开
 我来答
百度网友6234792
推荐于2016-10-21 · TA获得超过1267个赞
知道小有建树答主
回答量:385
采纳率:100%
帮助的人:317万
展开全部
## 连接符与# 符
## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元。具体的定义在编译原理里有详尽的解释,但不知道也无所谓。同时值得注意的是#符是把传递过来的参数当成字符串进行替代。下面来看看它们是怎样工作的。这是MSDN上的一个例子。

假设程序中已经定义了这样一个带参数的宏:

#define paster( n ) printf( "token" #n " = %d", token##n )

同时又定义了一个整形变量:

int token9 = 9;

现在在主程序中以下面的方式调用这个宏:

paster( 9 );

那么在编译时,上面的这句话被扩展为:

printf( "token" "9" " = %d", token9 );

注意到在这个例子中,paster(9);中的这个”9”被原封不动的当成了一个字符串,与”token”连接在了一起,从而成为了token9。而#n也被”9”所替代。

可想而知,上面程序运行的结果就是在屏幕上打印出token9=9
百度网友0b5fd592e
2010-07-15 · TA获得超过130个赞
知道小有建树答主
回答量:187
采纳率:0%
帮助的人:108万
展开全部
预处理是以“#”为开头的代码行。#号必须是该行除了任何空白字符外的第一个字符。#后面是指令的关键字。在关键字和#号之间允许存在任意个数空白字符。 整行语句构成一条预处理指令。该指令将在编译器进行编译之前对源代码做某些转换。

# 空指令。没有任何效果。
#include 在该指令的位置包含一个源代码文件
#define 定义宏
#undef 取消已定义的宏
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huopaoa
2010-07-15 · TA获得超过186个赞
知道答主
回答量:154
采纳率:0%
帮助的人:98.1万
展开全部
没记错的话是连接操作符,就是把P_2D_SPABOP和i的值连接起来,比如i=3,那么CS_OPENING(i) 就为P_2D_SPABOP3
CS_OPENING(BB)就为P_2D_SPABOPBB
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
栋曜迩0FP
高粉答主

2020-04-25 · 醉心答题,欢迎关注
知道答主
回答量:13万
采纳率:2%
帮助的人:6911万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式