0%

去除 __FILE__ 宏定义中的路径信息

通过编译选项去除路径信息:

makefile可以增加以下编译选项:

1
2
3
-U__FILE__ -D__FILE__='"$(notdir $<)"' -Wno-builtin-macro-redefined
或者
-U__FILE__ -D__FILE__='"$(subst ($dir $<),,$<)"' -Wno-builtin-macro-redefined

cmake同makefile,增加同样的编译选项:

1
2
3
4
5
6
add_definitions(-Wno-builtin-macro-redefined)

set(CMAKE_CXX_FLAGS "-U__FILE__ -D__FILE__='\"$(notdir $<)\"'")
或者
set(CMAKE_CXX_FLAGS "-U__FILE__ -D__FILE__='\"$(subst ($dir $<),,$<)\"'")


代码去除路径信息(可参考):

1
2
3
4
5
6
7
8
#include <string.h>

#ifdef WIN32
constexpr char _DirFlag = '\\';
#else
constexpr char _DirFlag = '/';

#define __FILENODIR__ (strrchr(__FILE__, _DirFlag) ? (strrchr(__FILE__, _DirFlag) + 1) : __FILE__)