gpt4 book ai didi

c++ - 我可以从可变参数函数提前返回吗?

转载 作者:太空狗 更新时间:2023-10-29 23:47:43 25 4
gpt4 key购买 nike

假设我有两个用于调试输出的 C++ 函数:

void Trace( const wchar_t* format, ... )
{
va_list args;
va_start( args, format );
VarArgTrace( format, args );
va_end( args );
}

void VarArgTrace( const wchar_t* format, va_list args )
{
WCHAR buffer[1024];
//use ::_vsnwprintf_s to format the string
::OutputDebugStringW( buffer );
}

以上使用 Win32 OutputDebugStringW(),但这并不重要。现在我想优化格式,以便在没有调试器时附加格式不会完成(我测量过 - 加速很重要):

void Trace( const wchar_t* format, ... )
{
if( !IsDebuggerPresent() ) {
return;
}
//proceed as previously
va_list args;
.....
}

一旦 IsDebuggerPresent() 返回 null,我会提前返回这一事实,除了会跳过格式化之外,是否会影响其他任何事情?

我的意思是我不再调用 va_startva_end - 这有关系吗?跳过 va_startva_end 会导致任何意外的行为变化吗?

最佳答案

不,没有义务在可变参数函数中使用 va_start。

如果不使用 va_start 就不能使用 va_end;如果您使用 va_start,则无论函数如何返回,您都应该使用 va_end。

关于c++ - 我可以从可变参数函数提前返回吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4324102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com