C/C++ __FILENAME__ macros 巨集

本篇 ShengYu 介紹 C/C++ __FILENAME__ macros 巨集的用法,C/C++ 標準的預定義巨集裡沒有原始檔檔名 __FILENAME__ 巨集,只有原始檔檔案路徑 __FILE__ 巨集,以下內容介紹透過一些方法來得到 __FILENAME__ 巨集。

C/C++ 標準的預定義巨集 macros 中有 __FILE__,通常是印出該原始檔的絕對路徑,例如:

1
/full/path/to/file.c

但是如果只想印出原始檔的檔名的話,像下面輸出這樣,要怎麼做呢?

1
file.c

由於 C/C++ 標準的預定義巨集沒有 __FILENAME__ 這樣的巨集可以使用,那我們就自己作一個 __FILENAME__ 巨集,
如下範例,原理是用 strrchr 從右邊開始尋找 '/' 有找到的話就回傳找到的指標+1,使用 strrchr 需要加入標頭檔 #include <string.h>

1
#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)

如果是 Windows 平台的話,就將 '/' 換成 '\\',如下範例,

1
#define __FILENAME__ (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)

以上就是 C/C++ __FILENAME__ macros 巨集介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

參考
https://stackoverflow.com/questions/8487986/file-macro-shows-full-path

其它相關文章推薦
如果你想學習 C++ 相關技術,可以參考看看下面的文章,
C/C++ strrchr 用法與範例
C/C++ 新手入門教學懶人包
C/C++ 字串搜尋的3種方法
C/C++ strstr 用法與範例