发布网友 发布时间: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这个宏的时候,展开就行了