我想让我的 API 的用户可以传递自定义格式字符串。
现在,我知道我期待什么样的说明符(对于单个双精度),我想让 clang 意识到这一点。
clang 文档(实际上只是指向gcc 文档)使我看起来好像只能根据我的函数/方法的实际参数指定格式。
但是,我只想告诉 clang:“如果它包含一个且只有一个 %f 说明符(带有调用者想要的任何标志、宽度或精度),那没关系”
我似乎无法找到该信息。任何指针?
谢谢
查看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
可能会抱怨说死代码,然后......