【问题标题】:msvc's equivalent of gcc's __BASE_FILE__msvc 相当于 gcc 的 __BASE_FILE__
【发布时间】: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


【解决方案1】:

感谢 John 的评论,这里有一个解决方法。如果您简单地输入__BASE_FILE__=%(Filename),它不会生成文字字符串。所以把它放在双引号之间;我还添加了扩展名,因为 %(Filename) 没有它。

__BASE_FILE__="%(Filename)%(Extension)"

此行必须写在项目属性页的预处理器页中。

【讨论】:

    【解决方案2】:
    猜你喜欢
    • 2018-07-12
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 2016-04-13
    相关资源
    最近更新 更多