【发布时间】:2018-10-31 13:40:02
【问题描述】:
根据这个answer,我们可以在GCC中使用__builtin__FUNCTION()找到调用函数的名称。是否有与此等效的 MSVC?
【问题讨论】:
标签: c++ visual-studio
根据这个answer,我们可以在GCC中使用__builtin__FUNCTION()找到调用函数的名称。是否有与此等效的 MSVC?
【问题讨论】:
标签: c++ visual-studio
std::source_location
将是未来的跨平台解决方案,让您可以:
void log(const std::string& message, const std::experimental::source_location& location = std::experimental::source_location::current())
{
std::cout << location.function_name() << ": " << message << "\n";
}
int main()
{
log("test");
}
在这可用之前,我所知道的最佳解决方案是使用宏来捕获 __FUNCTION__ 的值并将其传递给您的函数。例如这样的:
void log(const std::string& message, const std::string& function)
{
}
#define LOG(message) log(message, __FUNCTION__)
int main()
{
LOG("test");
}
【讨论】:
__builtin_FUNCTION 是 GCC 对 source_location 实现的支持!对于直接问题,这是一个非常有趣的答案!
是的,为 VS 2019 16.6 Preview 2(据此 link)添加了此类内在函数(__builtin_FILE()、__builtin_FUNCTION()、__builtin_LINE()、__builtin_COLUMN())以支持 c++20 std::source_location。
【讨论】: