Re: [問題] __LINE__這類型macro是怎麼實作的?
※ 引述《QQ29 (我愛阿蓉)》之銘言:
: 我覺得這個好神
: 我不確定它是不是macro 至少我 F12 在VC是無法跳到定義....
: 但我完全不知他怎麼有辦法知道行數
編譯器內建支援的啦...
有些地方可以拿來做一些特別用途
主要是追蹤問題程式碼的出處,比方說
#define MY_ASSERT(x) \
if (!(x)) cerr << __FILE__ << ":" << __LINE__ << endl ;
或是用來追蹤記憶體的配置
void* _myAlloc(size_t n, const char* file, size_t line) {
record (n, file, line) ; // 紀錄哪個檔案哪行要了多少到某個 log file
return malloc(...) ;
}
然後像這樣使用
#define MALLOC(x) _myAlloc(x, __FILE__, __LINE)
int *p = MALLOC(...) ;
這樣你所有配置的記憶體就會配 log 下來,
配合對應的 FREE log,你可以一一對應,抓到 memory leak。
像這種編譯器/Prerpocessor內建的 macro 其實很多,這邊有個列表
http://predef.sourceforge.net/index.php
--
To iterate is human, to recurse, divine.
遞迴只應天上有, 凡人該當用迴圈. L. Peter Deutsch
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.114.102
→
08/04 00:07, , 1F
08/04 00:07, 1F
推
08/04 00:16, , 2F
08/04 00:16, 2F
→
08/04 00:17, , 3F
08/04 00:17, 3F
→
08/04 00:26, , 4F
08/04 00:26, 4F
推
08/04 00:35, , 5F
08/04 00:35, 5F
→
08/04 00:35, , 6F
08/04 00:35, 6F
→
08/04 00:58, , 7F
08/04 00:58, 7F
→
08/04 01:14, , 8F
08/04 01:14, 8F
→
08/04 01:14, , 9F
08/04 01:14, 9F
→
08/04 01:15, , 10F
08/04 01:15, 10F
→
08/04 01:15, , 11F
08/04 01:15, 11F
→
08/04 01:16, , 12F
08/04 01:16, 12F
推
08/04 01:21, , 13F
08/04 01:21, 13F
→
08/04 01:22, , 14F
08/04 01:22, 14F
→
08/04 01:28, , 15F
08/04 01:28, 15F
→
08/04 01:29, , 16F
08/04 01:29, 16F
→
08/04 01:29, , 17F
08/04 01:29, 17F
→
08/04 01:29, , 18F
08/04 01:29, 18F
→
08/04 01:29, , 19F
08/04 01:29, 19F
→
08/04 01:31, , 20F
08/04 01:31, 20F
→
08/04 01:48, , 21F
08/04 01:48, 21F
→
08/04 01:48, , 22F
08/04 01:48, 22F
→
08/04 01:50, , 23F
08/04 01:50, 23F
推
08/04 05:02, , 24F
08/04 05:02, 24F
→
08/04 05:47, , 25F
08/04 05:47, 25F
推
08/04 08:57, , 26F
08/04 08:57, 26F
→
08/04 09:00, , 27F
08/04 09:00, 27F
→
08/04 09:00, , 28F
08/04 09:00, 28F
→
08/04 09:01, , 29F
08/04 09:01, 29F
推
08/04 09:12, , 30F
08/04 09:12, 30F
→
08/04 09:13, , 31F
08/04 09:13, 31F
→
08/04 09:13, , 32F
08/04 09:13, 32F
→
08/04 10:30, , 33F
08/04 10:30, 33F
→
08/04 10:31, , 34F
08/04 10:31, 34F
→
08/04 10:31, , 35F
08/04 10:31, 35F
推
08/04 13:40, , 36F
08/04 13:40, 36F
推
08/04 15:44, , 37F
08/04 15:44, 37F
→
08/04 16:45, , 38F
08/04 16:45, 38F
→
08/04 16:50, , 39F
08/04 16:50, 39F
推
08/04 16:52, , 40F
08/04 16:52, 40F
→
08/04 16:53, , 41F
08/04 16:53, 41F
→
08/04 21:54, , 42F
08/04 21:54, 42F
推
08/04 23:51, , 43F
08/04 23:51, 43F
→
08/05 00:00, , 44F
08/05 00:00, 44F
→
08/05 02:26, , 45F
08/05 02:26, 45F
→
08/05 21:35, , 46F
08/05 21:35, 46F
→
08/06 12:57, , 47F
08/06 12:57, 47F
→
08/06 12:57, , 48F
08/06 12:57, 48F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):