2

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

4

1 回答 1

3

不幸的是,目前无法仅通过编译器正确实现 source_location,因此您必须使用预处理器和宏__FILE____LINE__并将__FUNCTION__位置信息提供给存储它们的数据结构(您称之为 source_location) .

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

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

于 2017-06-27T20:32:23.363 回答