2015-05-14 49 views
0

我想定義諸如宏 -如何檢查可變參數__VA_ARGS__有效性?

#define log(lognumber,...) logreport(lognumber,__VA_ARGS__) 

我想檢查異常情況下__VA_ARGS__這些參數用戶當用戶呼叫日誌可以通過()。請提供給我的異常情況進行__VA_ARGS__


[更新自評:]

我的意思是,我想以這樣的方式,它應該打印特定數量的,我已經定義的錯誤logreport寫。

以一個例子一樣,如果我傳遞

log(NOTE,"%s",str) 

然後在它打印,我在這樣msgid %s, msdstr %s (10223)另一個文件分配了特定ID的情況下,但用戶使用

log(NOTE,"DIRECT STRING") 

它確實需要[???]作爲該字符串。所以,我怎麼會檢查,如果用戶傳遞一個參數這樣

log(NOTE,"%s",str) 

log(NOTE,"direct string") 

這種方式logreport功能?

+2

你說的「異常情況」是什麼意思?你究竟想要達到什麼目標? – cnicutar

+0

只寫代碼的logreport功能使用標準的'va_start','va_arg'和'va_end'宏對變量ARGS操作做檢查。至少這是我認爲你所要求的答案。但是你的問題並不十分清楚:「__VA_ARGS__'的例外情況」在沒有解釋這意味着什麼的情況下不是一個有意義的術語。 – kaylum

+0

如果我讀這正確的(我不知道我這樣做),你可能有興趣在http://stackoverflow.com/questions/2124339/c-preprocessor-va-args-number-of-arguments – Wintermute

回答

0

那麼我將如何檢查,如果用戶傳遞一個參數

目前的情況是唯一的辦法是解析第二個參數像"%s"一些轉換說明的occurency。