[問題] __LINE__這類型macro是怎麼實作的?

看板C_and_CPP作者 (我愛阿蓉)時間15年前 (2010/08/03 01:28), 編輯推噓2(2010)
留言12則, 5人參與, 最新討論串1/2 (看更多)
我覺得這個好神 我不確定它是不是macro 至少我 F12 在VC是無法跳到定義.... 但我完全不知他怎麼有辦法知道行數 run time有辦法? compile time如果__LINE__不是macro又不可能可以替換 非常好奇他怎麼辦到的 諸如__FILE__阿 http://blog.roodo.com/bejo/archives/11456265.html 真誇張 這是因為C++還是VC特有的東西阿? 17978篇 t大似乎有講一點但實在看不太懂.... 可否請了解的人 稍微講一下他是怎麼實作的阿 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.70.221 ※ 編輯: QQ29 來自: 123.192.70.221 (08/03 01:29)

08/03 02:01, , 1F
未看先猜前處理器內含counter算行數
08/03 02:01, 1F

08/03 02:02, , 2F

08/03 02:24, , 3F
C、C99、C++都有標準的predefined macro VC有額外加一些
08/03 02:24, 3F

08/03 02:26, , 4F
怎麼實作...應該是dependent on compiler吧
08/03 02:26, 4F

08/03 02:28, , 5F
不過我想簡單的preprocessor應該可以用直覺的方法實作@@
08/03 02:28, 5F

08/03 02:50, , 6F
__FILE__, __LINE__ 應該是標準的, 其他看compiler
08/03 02:50, 6F

08/03 02:50, , 7F
__LINE__可以用perl在gcc前自行展開, __FILE__可以在
08/03 02:50, 7F

08/03 02:51, , 8F
makefile裡面 下大D強制替換成 file name
08/03 02:51, 8F

08/03 02:53, , 9F
C99 support Variadic macro, 又炫又好用
08/03 02:53, 9F

08/03 09:27, , 10F
推一個, 今天才知道這個很炫的東西 ^^"
08/03 09:27, 10F

08/03 17:19, , 11F
我記得在哪看過..兩個_加上大寫字母開頭 都是predefined
08/03 17:19, 11F

08/03 17:19, , 12F
macro...所以你自己的#define不能佔用這個格式
08/03 17:19, 12F
文章代碼(AID): #1CLm0kUl (C_and_CPP)
文章代碼(AID): #1CLm0kUl (C_and_CPP)