例子:
"Something %d" and "Something else %d" // Compatible
"Something %d" and "Something else %f" // Not Compatible
"Something %d" and "Something %d else %d" // Not Compatible
"Something %d and %f" and "Something %2$f and %1$d" // Compatible
Run Code Online (Sandbox Code Playgroud)
我认为应该有一些C功能,但我没有得到任何相关的搜索结果.我的意思是编译器正在检查格式字符串和参数是否匹配,因此已经编写了用于检查它的代码.唯一的问题是我怎么称呼它.
我正在使用Objective-C,所以如果有一个Objective-C特定的解决方案也没关系.
可以将某些类型的类型泛型函数作为C中的宏来执行,例如:
#define SQRT(x) (sizeof(x) == sizeof(float) ? sqrtf((x)) : \
sizeof(x) == sizeof(double) ? sqrt((x)) : \
sqrtl((x)) )
Run Code Online (Sandbox Code Playgroud)
只要x是浮点类型,这(大多数)就可以正常工作.
但是,如果我想要一个可以采用整数类型或指针类型的类型通用宏,它可能具有相同的大小.有没有一种聪明的方法来测试宏参数是整数还是指针?整数与浮点类型怎么样?