【问题标题】:std::experimental::source_location implementation in visual studio视觉工作室中的 std::experimental::source_location 实现
【发布时间】:2017-11-29 15:41:15
【问题描述】:

可以在 gcc 中使用 __builtin_FILE()__builtin_LINE() 等实现合理一致的 std::experimental::source_location 版本。Visual Studio 2017 中是否存在类似的内在函数?或者有什么方法可以在 Visual Studio 2017 中实现std::experimental::source_location

【问题讨论】:

  • VS中定义了宏__FILE____LINE____FUNCTION__
  • 这些不足以实现source_location__builtin_FILE() 返回调用者的文件名,而不是原始位置。它是由编译器实现的,而不是像那些宏那样的预处理器。

标签: c++ visual-c++ visual-studio-2017 visual-c++-2017 std-source-location


【解决方案1】:

不幸的是,目前无法仅通过编译器正确实现 source_location,因此您必须使用预处理器和宏,如 __FILE____LINE____FUNCTION__ 将位置信息输入存储它们的数据结构(你称之为 source_location)。

话虽如此,我真的分担你的痛苦。

我最近一直在开发一个小型库,该库将位置数据和一些其他信息添加到抛出的异常中,我不得不最终得到一个丑陋的宏,例如 MY_THROW(Exception(args)),它基本上只是提供从将上述宏放入引发异常的函数中。尽管它看起来很糟糕,但它似乎是迄今为止唯一可行的选择。

【讨论】:

    猜你喜欢
    • 2016-03-28
    • 2019-03-29
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多