Objective c 目标-c确保var arg参数的类型和计数正确

Objective c 目标-c确保var arg参数的类型和计数正确,objective-c,Objective C,在objective-c中,如何确保如果函数采用可变参数,格式说明符与传递给function的实际参数对齐?这是通过使用NS\u format\u函数宏来实现的 假设你有这样一个函数: LOG(int level,NSString *format,...); 级别是日志级别,而格式包含格式字符串,变量参数是格式字符串的参数 为了在编译时确保参数的计数和类型正确,定义函数如下: LOG(int level,NSString *format,...) NS_FORMAT_FUNCTION(2,3)

在objective-c中,如何确保如果函数采用可变参数,格式说明符与传递给function的实际参数对齐?

这是通过使用NS\u format\u函数宏来实现的

假设你有这样一个函数:

LOG(int level,NSString *format,...);
级别是日志级别,而格式包含格式字符串,变量参数是格式字符串的参数

为了在编译时确保参数的计数和类型正确,定义函数如下:

LOG(int level,NSString *format,...) NS_FORMAT_FUNCTION(2,3);

请注意,这里的2和3指的是格式字符串的参数列表中的位置和变量参数列表的开头。

C默认情况下也不勾选

使用LLVM,可以通过宏
NS\u FORMAT\u函数检查(强制)参数的数量


无法检查参数的类型。它在某种程度上适用于printf,但var_args本身是任何类型的。。。我不介意被否决(即使我是对的),但请至少留下评论!NS_FORMAT_函数不检查类型。您将看到这样的消息:Format指定类型为'int',但参数的类型为NSString*,您能在这里更好地解释一下吗?您只解释了显而易见的(您想要的),也没有解释NS_格式函数参数的使用。这些数字意味着什么?它们意味着什么?