【发布时间】:2013-03-19 19:47:52
【问题描述】:
在 Visual C++ 中是否有任何与 __BASE_FILE__ 等效的东西?我想知道 VC++当前正在编译的文件的名称。
注意:__FILE__ 扩展为当前文件,例如它可能是#includes 之一。
来自 gcc 的文档:
__BASE_FILE__
此宏以 C 字符串常量的形式扩展为主输入文件的名称。这是调用 C 编译器时指定为参数的源文件。
【问题讨论】:
-
我通常能够从输出中猜出哪个源文件。我假设您只需要找到编译器警告和/或错误的根源。在 Configuration Properties\C/C++\Advanced 的项目属性中是 Show Includes 的选项。当您知道源文件时,也可以在文件的属性中设置它。
-
@John,不,我正在为嵌入式设备构建自定义内存泄漏检测器(通过过度定义
#define new new(__FILE__, __LINE__))。我现在正面临std::allocator和朋友的问题——他们是new阴影文件/使用行的包装器。因此,我决定尝试绑定到翻译单元的名称,以便至少知道搜索的初始方向。 -
您可以手动定义 BASE_FILE。尝试将 __BASE_FILE__=%(Filename) 添加到项目属性中定义的预处理器中。
标签: c++ visual-c++ gcc macros