gpt4 book ai didi

objective-c - __VA_ARGS__ 运行时等效?

转载 作者:行者123 更新时间:2023-12-04 03:08:39 24 4
gpt4 key购买 nike

我正在尝试制作一个类似于此的函数:

#define printf_copy(s, ...)  printf(s, ##__VA_ARGS__)  // acceptable!

但这是一个预处理器,我需要一个用于运行时,如下所示:

+ (NSString *)format:(NSString *)first, ...
{
return [NSString stringWithFormat:first, __VA_ARGS__]; // unacceptable!
}

但是!!这是编译器不能接受的!

我想弄清楚 (...) 的局部变量是什么?(是的,那 3 个点)

最佳答案

它与 C 可变参数函数完全相同。这意味着你不能直接传递它,你必须传递一个 va_list 。你需要这样的东西:

+ (NSString *)format:(NSString *)first, ...
{
NSString *string;
va_list args;

va_start(args, first);
string = [[NSString alloc] initWithFormat:first arguments:args];
va_end(args);

return [string autorelease];
}

关于objective-c - __VA_ARGS__ 运行时等效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16226010/

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