[英]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,如malloc
, free
, read
等),或者我們自己完成的功能。
編輯:作為參考,格式為%n$
,其中n
為非零數字的數字字符串,允許訪問給定printf的變量參數列表中該索引處的參數(從1開始)。 (並且可用於轉換本身,或用於帶有*
操作數的精度或字段寬度)。
您可以在屬性中使用gnu_printf
而不是printf
來模擬更接近POSIX的printf
的行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.