C语言中:##和#的用法 有这样一个例子:

#include<stdio.h>#definef(a,b)a##b#defineg(a)#a#defineh(a)g(a)intmain(){printf("%s\n"... #include<stdio.h>

#define f(a,b) a##b
#define g(a) #a
#define h(a) g(a)

int main()
{
printf("%s\n",h(f(1,2)));
printf("%s\n",g(f(1,2)));
return 0;
}

现在还不知道:##和#的用法 希望懂的前辈 讲下
展开
 我来答
zyl0462
2015-07-08 · TA获得超过1082个赞
知道小有建树答主
回答量:433
采纳率:75%
帮助的人:330万
展开全部
c语言中,##表示把两个宏参数贴合在一起,而单个#的功能是将其后面的宏参数进行字符串化操作。即,
#include<stdio.h>
#define f(a,b) a##b
#define g(a) #a
#define h(a) g(a)
int main()
{
printf("%s\n",h(f(1,2)));//输出12
printf("%s\n",g(f(1,2)));//输出f(1,2)
return 0;
}

##被称为连接符(直接贴合),用来将两个宏参数连接为一个宏参数。而单个#的功能是将其后面的宏参数进行字符串化操作,简单地说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号,使其成为字符串。
02230838
2010-09-20 · TA获得超过2067个赞
知道小有建树答主
回答量:759
采纳率:0%
帮助的人:1067万
展开全部
在宏定义里,a##b就是把a,b联接起来,
比如f(1,2)就是12,但是是数。
#a就是把a转化成字串,并合并。
所以 printf("%s\n",g(f(1,2)));就直接把f(1,2)转成字串了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
66666顺心
2015-05-29 · TA获得超过819个赞
知道小有建树答主
回答量:393
采纳率:100%
帮助的人:319万
展开全部
##用来连接前后两个参数,把它们变成一个字符串。

举例说:
#define Conn(x,y) x##y
int n = Conn(123,456); 结果就是n=123456;
char* str = Conn("asdf", "adf")结果就是 str = "asdfadf";
你给出的宏
#是预编译的象征有了这个编译器就知道他是在预编译前需要做的事
如包含文件
#include<>
#define N 100//在编译前将N全部替换为100
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zqs418428799
2010-09-21
知道答主
回答量:95
采纳率:0%
帮助的人:26.4万
展开全部
#define A(x) T_##x
#define B(x) #@x

#define C(x) #x
我们假设:x=1,则有:
A(1)------〉T_1
B(1)------〉'1'
C(1)------〉"1"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式