亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3227 | 回復: 7
打印 上一主題 下一主題

介紹一個C的宏應用:X-Macros [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2007-04-24 14:17 |只看該作者 |倒序瀏覽
無意中在wikipedia上看到的,覺得有些意思。所謂X-Macro,就是一個文件在同一個頭文件中被include多次(當然在不同的預處理環(huán)境下),以取得特定的效果,下面是一個例子:

File: commands.def

  1. COMMAND(ADD, "Addition command")
  2. COMMAND(SUB, "Subtraction command")
  3. COMMAND(XOR, "Exclusive-or command")
復制代碼


  1. enum command_indices {
  2. #define COMMAND(name, description)              COMMAND_##name ,
  3. #include "commands.def"
  4. #undef COMMAND
  5.     COMMAND_COUNT /* The number of existing commands */
  6. };

  7. char *command_descriptions[] = {
  8. #define COMMAND(name, description)              description ,
  9. #include "commands.def"
  10. #undef COMMAND
  11.     NULL
  12. };

  13. result_t handler_ADD (state_t *)
  14. {
  15.   /* code for ADD here */
  16. }

  17. result_t handler_SUB (state_t *)
  18. {
  19.   /* code for SUB here */
  20. }

  21. result_t handler_XOR (state_t *)
  22. {
  23.   /* code for XOR here */
  24. }

  25. typedef result_t (*command_handler_t)(state_t *);

  26. command_handler_t command_handlers[] = {
  27. #define COMMAND(name, description)              &handler_##name ,
  28. #include "commands.def"
  29. #undef COMMAND
  30.     NULL
  31. };
復制代碼

論壇徽章:
0
2 [報告]
發(fā)表于 2011-12-24 19:37 |只看該作者
有點意思

論壇徽章:
2
程序設計版塊每日發(fā)帖之星
日期:2015-06-17 22:20:00每日論壇發(fā)貼之星
日期:2015-06-17 22:20:00
3 [報告]
發(fā)表于 2011-12-24 23:07 |只看該作者
提示: 作者被禁止或刪除 內容自動屏蔽

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
4 [報告]
發(fā)表于 2011-12-25 11:20 |只看該作者
這個用法別出心裁

論壇徽章:
0
5 [報告]
發(fā)表于 2011-12-25 12:13 |只看該作者
原來這種用法還有名字

論壇徽章:
0
6 [報告]
發(fā)表于 2011-12-25 15:16 |只看該作者
看不太懂  

論壇徽章:
0
7 [報告]
發(fā)表于 2011-12-26 14:55 |只看該作者
就只是宏嵌套宏,使用CPP的擴展達到想要的效果而以。
比較復雜的是宏多次嵌套,這種代碼有人會抱怨很難讀懂。。。

論壇徽章:
0
8 [報告]
發(fā)表于 2011-12-26 20:48 |只看該作者
這個沒有BOOST_PP  BT。。
BOOST_PP才是最BT的宏用法。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP