除錯:
將描述式給一起印出
case1:
#define DPRINTF
#define DPRINTF
case2:
#define
WARN_IF
Note:
|
case1:
DPRINTF
=>x=0xaa;
case2:
WARN_IF }
=>Warning: x == 0
|
除錯巨集
#define DBG_PRINTF
{
DBG_PRINTF("Hello\n");
}
Note:
|
=>[main
|
除錯巨集的分級審查
#if DBG_LEVEL==0
#define
PRINTF
#else
#define PRINTF
#endif
|
|
包裝:
利用參數來選擇呼叫的函式
#define test
test1
printf("%s\n",__FUNCTION__);
}
test2
printf("%s\n",__FUNCTION__);
}
}
Note:
|
=>test2
|
程式碼封裝(do while巨集定義)
#define HELLO
printf("Hello:%s\n",str)
Note:
#define HELLO
printf();;//多一個分號會視為if結構結束,
//else被視為新的程式(沒有if)
}
|
|
將表格(cmd table)簡單化:
#define COMMAND
} COMMAND COMMAND };
Note: #name: 為字串 "xxx"
|
展開=>
} {" {" }; |
功能:
在buffer中得到字串的大小
#define _STRING_LEN_GET
#define
STRING_LEN_GET
|
{
printf("%d\n",sizeof(buf));
printf("%d\n",STRING_LEN_GET(buf));
}
=>
128
4
|
#define
ROUND_DOWN_TO_DIVISIBLE
#define
ROUND_UP_TO_DIVISIBLE
ROUND_DOWN_TO_DIVISIBLE(
(UINT32)(num) + (div) - 1, div )
|
|
沒有留言:
張貼留言