static int id##_es_l, id##_es_t, id##_es_r, id##_es_b;\
...
那些##_es_l什么意思?
11 个解决方案
#1
##在宏中表示连字符
#2
##是把后面的连接起来形成完整的标志符
比如
#define jing( A ) int A##bc;
而
jing( a )
就相当于
int abc;
比如
#define jing( A ) int A##bc;
而
jing( a )
就相当于
int abc;
#3
加固定的后缀
#4
#define EASYSIZE(id,l,t,r,b,o) \
static int id##_es_l, id##_es_t, id##_es_r, id##_es_b;\
宏定义的基本形式 \是换行的 ##是连接的
static int id##_es_l, id##_es_t, id##_es_r, id##_es_b;\
宏定义的基本形式 \是换行的 ##是连接的
#5
#define EASYSIZE(id,l,t,r,b,o) \
static int id##_es_l, id##_es_t, id##_es_r, id##_es_b;\
\ 表示续行服,表示代码一行写不下,接下来再写
## 用来告诉编译器将两个字符串连在一起
在你的程序中可以这样使用:
int main()
{
.................
EASYSIZE(xulei,x,u,l,e,i) //这里没有分号
xulei_es_b = 12; //xulei就表示你使用的id,使用这个宏你定义了
//xulei_es_l,xulei_es_t,xulei_es_r,xulei_es_b四个静态变量
.....................
}
static int id##_es_l, id##_es_t, id##_es_r, id##_es_b;\
\ 表示续行服,表示代码一行写不下,接下来再写
## 用来告诉编译器将两个字符串连在一起
在你的程序中可以这样使用:
int main()
{
.................
EASYSIZE(xulei,x,u,l,e,i) //这里没有分号
xulei_es_b = 12; //xulei就表示你使用的id,使用这个宏你定义了
//xulei_es_l,xulei_es_t,xulei_es_r,xulei_es_b四个静态变量
.....................
}
#6
谢谢大家啦,有关于宏的详细的介绍吗?最好中文的
还有 #define BEGIN_EASYSIZE_MAP(class) \
里面的class和关键字重了,这样用也行?还是这个class在宏定义里有特殊的意思?
还有 #define BEGIN_EASYSIZE_MAP(class) \
里面的class和关键字重了,这样用也行?还是这个class在宏定义里有特殊的意思?
#7
宏的优先级高,处理宏的时候,还轮不到考虑它是不是关键字什么的。
虽然和关键字重名严重影响了对宏不熟悉的人进行阅读。
虽然和关键字重名严重影响了对宏不熟悉的人进行阅读。
#8
##是把后面的连接起来形成完整的标志符
比如
#define jing( A ) int A##bc;
而
jing( a )
就相当于
int abc;
--
zhengjie
比如
#define jing( A ) int A##bc;
而
jing( a )
就相当于
int abc;
--
zhengjie
#9
EASYSIZE(xulei,x,u,l,e,i) //这里没有分号
xulei_es_b = 12; //xulei就表示你使用的id,使用这个宏你定义了
//xulei_es_l,xulei_es_t,xulei_es_r,xulei_es_b四个静态变量
------------------------------------------------------------------------------------
搞不清那(xulei,x,u,l,e,i) 中的5个参数x,u,l,e,i是用来干什么的啊??
看了 #define EASYSIZE(id,l,t,r,b,o) \
static int id##_es_l, id##_es_t, id##_es_r, id##_es_b;\
我以为es_后面跟着的是l,t,r,b 4个参数,最后一个o又是个什么东东?
xulei_es_b = 12; //xulei就表示你使用的id,使用这个宏你定义了
//xulei_es_l,xulei_es_t,xulei_es_r,xulei_es_b四个静态变量
------------------------------------------------------------------------------------
搞不清那(xulei,x,u,l,e,i) 中的5个参数x,u,l,e,i是用来干什么的啊??
看了 #define EASYSIZE(id,l,t,r,b,o) \
static int id##_es_l, id##_es_t, id##_es_r, id##_es_b;\
我以为es_后面跟着的是l,t,r,b 4个参数,最后一个o又是个什么东东?
#10
没人解释?
#11
o ,看定义是设置是不是水平还是垂直居中的选项...看这个宏的定义,对应的是这个语句...
if ( o & ES_HCENTER ) id##_es_l = rect.Width() / 2
if ( o & ES_HCENTER ) id##_es_l = rect.Width() / 2
#1
##在宏中表示连字符
#2
##是把后面的连接起来形成完整的标志符
比如
#define jing( A ) int A##bc;
而
jing( a )
就相当于
int abc;
比如
#define jing( A ) int A##bc;
而
jing( a )
就相当于
int abc;
#3
加固定的后缀
#4
#define EASYSIZE(id,l,t,r,b,o) \
static int id##_es_l, id##_es_t, id##_es_r, id##_es_b;\
宏定义的基本形式 \是换行的 ##是连接的
static int id##_es_l, id##_es_t, id##_es_r, id##_es_b;\
宏定义的基本形式 \是换行的 ##是连接的
#5
#define EASYSIZE(id,l,t,r,b,o) \
static int id##_es_l, id##_es_t, id##_es_r, id##_es_b;\
\ 表示续行服,表示代码一行写不下,接下来再写
## 用来告诉编译器将两个字符串连在一起
在你的程序中可以这样使用:
int main()
{
.................
EASYSIZE(xulei,x,u,l,e,i) //这里没有分号
xulei_es_b = 12; //xulei就表示你使用的id,使用这个宏你定义了
//xulei_es_l,xulei_es_t,xulei_es_r,xulei_es_b四个静态变量
.....................
}
static int id##_es_l, id##_es_t, id##_es_r, id##_es_b;\
\ 表示续行服,表示代码一行写不下,接下来再写
## 用来告诉编译器将两个字符串连在一起
在你的程序中可以这样使用:
int main()
{
.................
EASYSIZE(xulei,x,u,l,e,i) //这里没有分号
xulei_es_b = 12; //xulei就表示你使用的id,使用这个宏你定义了
//xulei_es_l,xulei_es_t,xulei_es_r,xulei_es_b四个静态变量
.....................
}
#6
谢谢大家啦,有关于宏的详细的介绍吗?最好中文的
还有 #define BEGIN_EASYSIZE_MAP(class) \
里面的class和关键字重了,这样用也行?还是这个class在宏定义里有特殊的意思?
还有 #define BEGIN_EASYSIZE_MAP(class) \
里面的class和关键字重了,这样用也行?还是这个class在宏定义里有特殊的意思?
#7
宏的优先级高,处理宏的时候,还轮不到考虑它是不是关键字什么的。
虽然和关键字重名严重影响了对宏不熟悉的人进行阅读。
虽然和关键字重名严重影响了对宏不熟悉的人进行阅读。
#8
##是把后面的连接起来形成完整的标志符
比如
#define jing( A ) int A##bc;
而
jing( a )
就相当于
int abc;
--
zhengjie
比如
#define jing( A ) int A##bc;
而
jing( a )
就相当于
int abc;
--
zhengjie
#9
EASYSIZE(xulei,x,u,l,e,i) //这里没有分号
xulei_es_b = 12; //xulei就表示你使用的id,使用这个宏你定义了
//xulei_es_l,xulei_es_t,xulei_es_r,xulei_es_b四个静态变量
------------------------------------------------------------------------------------
搞不清那(xulei,x,u,l,e,i) 中的5个参数x,u,l,e,i是用来干什么的啊??
看了 #define EASYSIZE(id,l,t,r,b,o) \
static int id##_es_l, id##_es_t, id##_es_r, id##_es_b;\
我以为es_后面跟着的是l,t,r,b 4个参数,最后一个o又是个什么东东?
xulei_es_b = 12; //xulei就表示你使用的id,使用这个宏你定义了
//xulei_es_l,xulei_es_t,xulei_es_r,xulei_es_b四个静态变量
------------------------------------------------------------------------------------
搞不清那(xulei,x,u,l,e,i) 中的5个参数x,u,l,e,i是用来干什么的啊??
看了 #define EASYSIZE(id,l,t,r,b,o) \
static int id##_es_l, id##_es_t, id##_es_r, id##_es_b;\
我以为es_后面跟着的是l,t,r,b 4个参数,最后一个o又是个什么东东?
#10
没人解释?
#11
o ,看定义是设置是不是水平还是垂直居中的选项...看这个宏的定义,对应的是这个语句...
if ( o & ES_HCENTER ) id##_es_l = rect.Width() / 2
if ( o & ES_HCENTER ) id##_es_l = rect.Width() / 2