std::experimental::source_location 在 visual studio 中实施

std::experimental::source_location implementation in visual studio

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

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

话虽如此,我确实分担了你的痛苦。

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