【发布时间】:2021-12-20 20:40:49
【问题描述】:
我正在尝试捕获 std::format 样式消息以供在 VS2019 中使用:
#define MyFunc(...) MsgProcessing( std::format( __VA_ARGS__ ) );
只要消息适合程序中的一行,就可以完美地工作。但是,如果消息在后续行上继续,则 if 似乎省略号无法理解继续到右括号,并在第一行的末尾停止,从而导致可预测的错误。
有谁知道捕获多行调用的方法,例如:
MyFunc( "{} {}",
"Hello",
"world" );
谢谢!
我刚刚尝试了自己的完全简化的示例,并且正如预期的那样,它运行良好。其他地方必须有一些交互来阻止它在更大的系统中工作(它有很多第三方包含)。一个奇怪的症状,但我会以不同的方式前进。感谢您的所有帮助!
【问题讨论】:
-
您是否可能不小心在字符串文字中间断了行?
-
你为什么要这个?
-
@TedLyngmo 因为每次你想记录一些东西时输入
MsgProcessing(std::format(........))很乏味? -
@M.M 对于使用
__LINE__等的日志记录,我可以看到宏的使用,但这看起来像一个普通函数?类似template<class... Args> decltype(auto) MyFunc(Args&&... args) { return MsgProcessing( std::format(std::forward<Args(args)...) );
标签: c++ visual-studio-2019 c++20