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))
这样丑陋的宏,它基本上只提供将从上述宏中获得的值放入抛出异常的函数中。尽管它看起来很糟糕,但它似乎是目前唯一可行的选择。
可以在 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))
这样丑陋的宏,它基本上只提供将从上述宏中获得的值放入抛出异常的函数中。尽管它看起来很糟糕,但它似乎是目前唯一可行的选择。