当前位置: 技术问答>linux和unix
哪位大侠能解释下面的这个宏么
来源: 互联网 发布时间:2016-11-28
本文导语: 哪位大侠能解释下面的这个宏么: #define APP_START(appname) struct app_descriptor _app_##appname __SECTION(".apps") = { .name = #appname, #define APP_END }; | 宏定义里面有个##表示把字符串联在一起 宏定义中...
哪位大侠能解释下面的这个宏么:
#define APP_START(appname) struct app_descriptor _app_##appname __SECTION(".apps") = { .name = #appname,
#define APP_END };
#define APP_START(appname) struct app_descriptor _app_##appname __SECTION(".apps") = { .name = #appname,
#define APP_END };
|
宏定义里面有个##表示把字符串联在一起
宏定义中的#表示将其变为字符串
如:APP_START(abc)展开之后就是
宏定义中的#表示将其变为字符串
如:APP_START(abc)展开之后就是
struct app_descriptor _app_abc __SECTION(".apps") = {
.name = “abc”,
|
可以方便初始化内容相似的结构体
宏的单行定义(少见用法)
#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"
http://blog.csdn.net/jernymy/archive/2009/11/13/4809172.aspx
#define APP_START(appname) struct app_descriptor _app_##appname __SECTION(".apps") = { .name = #appname,
#define APP_END };
APP_START(tStruct1)
APP_END
APP_START(tStruct2)
APP_END
struct app_descriptor _app_tStruct1 __SECTION(".apps") = { .name = "tStruct1", };
struct app_descriptor _app_tStruct2 __SECTION(".apps") = { .name = "tStruct2", };
|
struct app_descriptor _app_appname __SECTION(".apps") = { .name = "appname",
会被这个代替 appname会被具体的宏的括号内的东西替换
会被这个代替 appname会被具体的宏的括号内的东西替换
|
en