std::experimental::source_location
可以在 gcc 中使用__builtin_FILE()
、等实现合理一致的版本。Visual __builtin_LINE()
Studio 2017 中是否存在类似的内在函数?或者有什么方法可以std::experimental::source_location
在 Visual Studio 2017 中实现?
问问题
1937 次
1 回答
3
不幸的是,目前无法仅通过编译器正确实现 source_location,因此您必须使用预处理器和宏__FILE__
,__LINE__
并将__FUNCTION__
位置信息提供给存储它们的数据结构(您称之为 source_location) .
话虽如此,我真的分担你的痛苦。
我最近一直在开发一个小型库,它将位置数据和一些其他信息添加到抛出的异常中,我不得不最终得到一个丑陋的宏MY_THROW(Exception(args))
,基本上只是将从上述宏获得的值提供给函数抛出异常。尽管它看起来很糟糕,但它似乎是迄今为止唯一可行的选择。
于 2017-06-27T20:32:23.363 回答