2

我想让我的 API 的用户可以传递自定义格式字符串。

现在,我知道我期待什么样的说明符(对于单个双精度),我想让 clang 意识到这一点。

clang 文档(实际上只是指向gcc 文档)使我看起来好像只能根据我的函数/方法的实际参数指定格式。

但是,我只想告诉 clang:“如果它包含一个且只有一个 %f 说明符(带有调用者想要的任何标志、宽度或精度),那没关系”

我似乎无法找到该信息。任何指针?

谢谢

4

1 回答 1

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可能会抱怨说死代码,然后......

于 2013-07-14T04:09:22.927 回答