C语言宏定义里头#define JJJJJ(tag) jj(#_tag)是啥意思?

发布网友 发布时间:2022-04-23 18:25

我来回答

3个回答

热心网友 时间:2022-05-01 17:50

C语言宏定义里头的#的意思是将宏参数转换成字符串。上述的写法是无法编译通过的,正确的写法应该是#define JJJJJ(tag) jj(#tag)
请看下面的例子:

#define JJJJJ(tag) jj(#tag)
#include <iostream>
using namespace std;
void jj( const char *str )
{
cout << str;
}
void main()
{
JJJJJ(OK);
}

热心网友 时间:2022-05-01 19:08

你确定是#define JJJJJ(tag) jj(#_tag)
而不是#define JJJJJ(tag) jj(#tag)?
第一种不懂;第二种的意思是在预处理阶段,会将tag用“tag”替换,#运算符的作用是字符串面量化!

热心网友 时间:2022-05-01 20:42

举个例子吧,如定义#define Max(x,y) x>y?x,y;
当你在程序中遇到Max这个宏的时候,展开就行了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com