gpt4 book ai didi

c - 允许自定义 printf 的 %n$ 操作数

转载 作者:行者123 更新时间:2023-11-30 16:36:50 24 4
gpt4 key购买 nike

我有一个 printf 的自定义实现,我在学校项目中使用它。希望有与 printf 相同的警告,我使用 __attribute__((format (printf ...)) 。效果很好,但是使用 -Wall -Wextra -Werror -std=c11 -pedantic-errors ,我收到错误 ISO C does not support %n$ operand number formats在海湾合作委员会 7.2.0 上。 (我的实现支持该格式)。 在 clang 上,如果我使用 std=c11,它不会发出警告。 ,但与std=c99有关。

该格式是 c11 规范的一部分(我认为是 clang 行为)还是仅是 Singe Unix 规范(这就是我的手册页所说的)?如果是这样,我该如何使用它?在 this page ,我找不到它作为 std 的选项.

我宁愿不禁用任何警告,因为它们非常有用并且可以捕获很多内容。但是有没有办法在格式字符串中允许该格式,或者仅为我的函数指定?

非常感谢。

P.S: 我使用 printf 的自定义实现,因为在我的学校项目中,我们必须只使用特定允许的函数(基本上,系统 api,如 mallocfreeread 等),或者我们已经完成的函数我们自己。

编辑:供引用,格式 %n$ ,与 n作为非零数字的数字字符串,允许访问提供给 printf 的变量参数列表中该索引处的参数(从 1 开始)。 (并且可用于转换本身或用于 * 操作数的精度或字段宽度)。

最佳答案

您可以在属性中使用 gnu_printf 而不是 printf 来建模更接近 POSIX 的 printf 的行为。

关于c - 允许自定义 printf 的 %n$ 操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48285280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com