1
我有以下一組宏(我從How can I use the compile time constant __LINE__ in a string?的第一個答案中得到)試圖讓我有一個宏'LOCATION_PREFIX',我可以用它來「捕捉」一行的位置代碼(將被傳遞給將執行日誌記錄的其他函數)。宏中的C++連接
#define STRINGIZE(f,l) STRINGIZE2(f) "(" STRINGIZE2(l)"):"
#define STRINGIZE2(x) #x
#define LOCATION_PREFIX STRINGIZE(__FILE__, __LINE__)
int main(){
printf("%s here\n", LOCATION_PREFIX);
printf("%s over here\n", LOCATION_PREFIX);
return 1;
}
輸出:
「t.cpp」(8):這裏
「t.cpp」(9):在這裏
我想要的輸出爲:
t.cpp(8):這裏
t.cpp(9):在這裏
任何幫助,非常感謝!
乾杯!完美地工作,非常感謝你的快速反應......我會盡快接受答案。 – Scottymac 2013-03-20 15:32:52
注意,你也可以放棄'STRINGIZE'的'f'參數並直接放入'__FILE__'。但我沒有這樣做,所以與你的代碼有明確的關係。 – 2013-03-20 15:34:10
我會給這個旋轉thx! – Scottymac 2013-03-20 15:44:38