我想为我的API用户提供传递自定义格式字符串的可能性。
现在,我知道我期待什么样的指示符(单个双倍),我想让clang意识到这一点。
clang documentation(实际上只指向gcc documentation)使我看起来好像只能根据我的函数/方法的实际参数指定格式。
但是,我只想告诉clang:“如果它包含一个,只有一个%f说明符(带有调用者想要的任何标志,宽度或精度),那就没问题了”
我似乎无法找到这些信息。有什么指针吗?
由于
答案 0 :(得分:1)
查看gcc
文档,我认为没有办法直接执行您想要的操作。
(我假设你的目标是要求一种适合打印单float
的格式。)
我能想到的最接近的事情就是如果你有你的功能void myfunc(const char *fmt)
你可以把它重写为
extern void do_myfunc(const char *fmt); /* the real body of myfunc() */
inline void myfunc(const char *fmt) { /* put this in the header */
if (0) {
float f = 0.0f;
printf(fmt, f);
}
do_myfunc(fmt);
}
并依靠clang
删除死代码。当然,clang
可能会抱怨所说的死代码,然后......