永发信息网

C语言中#和#和##分别有什么用啊

答案:5  悬赏:60  手机版
解决时间 2021-03-08 05:27
  • 提问者网友:临风不自傲
  • 2021-03-07 21:37
C语言中#和#和##分别有什么用啊
最佳答案
  • 五星知识达人网友:鱼芗
  • 2021-03-07 22:24
c语言中,##表示把两个宏参数贴合在一起,而单个#的功能是将其后面的宏参数进行字符串化操作。即,
#include
#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;
}

##被称为连接符(直接贴合),用来将两个宏参数连接为一个宏参数。而单个#的功能是将其后面的宏参数进行字符串化操作,简单地说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号,使其成为字符串。
全部回答
  • 1楼网友:患得患失的劫
  • 2021-03-08 01:59
#要是我就把他当做是C语言中定义命令的表识符不过我觉得奇怪为什么会问这么个无聊的问题呢知道了又有什么用
  • 2楼网友:千夜
  • 2021-03-08 01:06
##:
Token-Pasting Operator (##)
define paster( n ) printf( "token" #n " = %d", token##n )
int token9 = 9;
If a macro is called with a numeric argument like
paster( 9 );
the macro yields
printf( "token" "9" " = %d", token9 );
which becomes
printf( "token9 = %d", token9
#的用法就太多老 看看MSDN吧 :)
  • 3楼网友:一袍清酒付
  • 2021-03-08 00:29
##也就是C的更高级了啊,他是在C上升级了而已
  • 4楼网友:我住北渡口
  • 2021-03-07 23:16
#是将输入参数加上""变为字符串,如,定义宏:
#define p(s) put(#s)
使用宏p(hello world),则替换为:
put("hello world")
## 是连接符号
如,定义宏:
#define func(aa, bb, cc) aa##_##bb(cc)
则宏
func(average, sqrt, ref)
展开为
average_sqrt(ref)
可见它可能编程一个真正的函数调用。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯