gpt4 book ai didi

objective-c - xcode 中的 c 函数声明/用在调试和发布中表现不同的东西替换 NSLog

转载 作者:太空狗 更新时间:2023-10-30 03:57:58 25 4
gpt4 key购买 nike

这是一个相当愚蠢的问题!但是在下面的函数中,你如何使用传入的剩余参数:

void NSLog(NSString *format, ...)
{
//here I can use "format" but how can I use the remaining arguments?
}

很难找到这个问题的答案,因为我无法搜索“...”?!顺便说一句,这就是 NSLog 的工作原理,但我把它放在这里只是为了举例,我的问题与 NSLog 无关。

最佳答案

使用可变参数列表:

void NSLog(NSString *format, ...)
{
va_list ap;
va_start(ap, format);

while( (value = va_arg(args, NSString *) ){
// Do something with value. This is assuming they are all strings
}

// or pass entire list to another function
NSLog_VA( format, ap );

va_end(ap);
}

void NSLog_VA( NSString * format, va_list args )
{
// do something with va_list here
}

编辑:由于您只需要调试日志:

#ifdef DEBUG 
#define DebugOnly_Log(format, args...) NSLog(format, ##args)
#else
#define DebugOnly_Log(format, args...) // defined to nothing
#endif

关于objective-c - xcode 中的 c 函数声明/用在调试和发布中表现不同的东西替换 NSLog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6508956/

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