繁体   English   中英

允许%n $操作数用于自定义printf

[英]Allowing %n$ operand for custom printf

我在学校项目中使用了printf的自定义实现。 希望有与printf相同的警告,我使用__attribute__((format (printf ...)) 。可以正常工作,但是使用-Wall -Wextra -Werror -std=c11 -pedantic-errors ,我得到错误ISO C does not support %n$ operand number formats在gcc 7.2.0上ISO C does not support %n$ operand number formats (我的实现支持该格式)。在clang上,如果我使用std=c11不会发出警告,但对std=c99发出警告。

该格式是c11规范的一部分(让我想一下是clang行为)还是仅Singe Unix规范(这就是我的手册页所说的)? 如果可以,该如何使用? 此页面中 ,我找不到它作为std的选项。

我宁愿不禁用任何警告,因为它们非常有用并且广受欢迎。 但是有没有办法允许格式字符串中的格式,或者只为我的函数指定?

非常感谢。

PS:我使用printf的自定义实现,因为在我的学校项目中,我们必须仅使用特定的允许功能(基本上是系统api,如mallocfreeread等),或者我们自己完成的功能。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM