Objective c 目标-c确保var arg参数的类型和计数正确
在objective-c中,如何确保如果函数采用可变参数,格式说明符与传递给function的实际参数对齐?这是通过使用NS\u format\u函数宏来实现的 假设你有这样一个函数: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)
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_格式函数参数的使用。这些数字意味着什么?它们意味着什么?