作者dybert ()
看板C_and_CPP
标题[问题] 一个Macro的问题(编译期或执行期)
时间Sun Jul 5 21:35:42 2009
#define DRIVER_WIFI 3
#define PREFIX_DRIVER_WIFI "[D:WIFI]"
void msg(char* str)
{
printf(str);
}
#define MSG(mode, fmt) \
{ \
msg(PREFIX_##mode " " fmt); \
} \
int main()
{
MSG(DRIVER_WIFI, "Hello world");
return 0;
}
请问一下,最後会印出 [D:WIFI] Hello world,
那这个字串应该是完全在编译期就决定好的吧?
还是说编译期只决定了字串由PREFIX_DRIVER_WIFI " " "Hello world"组成,
最後在执行期才变成[D:WIFI] Hello world?
感谢指点....
--
闭上眼睛 我看见过去
张开眼睛 我看见未来
只是那些看不见的 依旧存在
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.42.170.234
1F:推 Ebergies:PREFIX_DRIVER_WIFI " " "Hello world" 这样不是编译期吗 07/05 21:46
2F:推 williamyu:complie时就整个被替换掉了 07/05 21:48
3F:推 ckclark:preprocess 07/05 21:50
5F:→ kaichan:你就会发现这是 preprocess 的处理了 07/06 18:01