簡體   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