2013-07-11 92 views
2

我想給我的API用戶傳遞一個自定義格式字符串的可能性。__attribute__格式的特定說明符?

現在,我知道我期待什麼樣的說明符(對於一個double),並且我想讓clang知道這一點。

clang documentation(它實際上只是指向gcc documentation)使我看起來好像只能根據我的函數/方法的實際參數指定格式。

不過,我只是想告訴鏗鏘:「如果它包含一個,只有一個%F符(與任何標誌,寬度或精度呼叫者想),這是確定」

我可以」似乎找不到這些信息。任何指針?

感謝

+1

您的問題不清楚,因爲它似乎討論無關的事情。你能澄清一些代碼示例 - 你到底想看什麼? –

+1

@EliBendersky:聽起來這個提問者想要定義'printf'格式語法的一個受限子集,並讓編譯器拒絕任何不符合它的東西。 –

+0

Peter Horsey,你是對的,這是我的意圖。如果不拒絕,至少要警告它。 – below

回答

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可能會抱怨說,死代碼,然後...

+0

謝謝你確認我的懷疑:顯然,沒有辦法(優雅)做到這一點:( – below