在objective-c中,如果您有一个带有可变参数的函数,您如何确保格式说明符与传递给函数的实际参数一致?
问问题
3919 次
2 回答
28
这是通过使用 NS_FORMAT_FUNCTION 宏来完成的。
假设您有这样的功能:
LOG(int level,NSString *format,...);
级别是日志级别,而格式包含格式字符串,变量参数是格式字符串的参数。
为了确保在编译时参数的数量和类型是正确的,我们将函数定义为:
LOG(int level,NSString *format,...) NS_FORMAT_FUNCTION(2,3);
注意这里的 2 和 3 是指格式字符串的参数列表中的位置和可变参数列表的开始。
于 2013-06-07T11:39:16.860 回答
0
默认情况下,C 也不检查。
如今:使用 LLVM,可以通过 CF 宏检查(强制执行)参数的数量和类型NS_FORMAT_FUNCTION
于 2013-06-07T14:54:48.267 回答