[英]C++ #define variable parameter function
我有一個CPU敏感的應用程序,並希望最小化函數調用。 我想寫一些類似的東西:
#ifdef condition
#define f(a,b) ff(a,b)
#define f(a) ff(a)
#endif
但編譯器會將f視為多次定義。 我想使用__VAR_ARGS__
但在上面的示例中, b
是enum
類型。 有沒有正確的方法,或者我應該將f(a,b)
重命名為f2(a,b)
?
為了闡明定義,如果激活,則添加對處理數據以打印到文件/標准輸出的函數的調用,否則它們將被替換為空行,因此在我看來這種方法會改善代碼大小,因為宏是單行關鍵字,如INFO(object->contents)
我認為它更具可讀性。 如果我可以添加諸如WARN("message")
和WARN("value is",obj->printvalue())
那將會非常有用。
我也認為inline
做到這一點(從下面的答案)。
這是一種非常接近這種方式的C-ish方式。 簡單地使它成為一個重載的inline
函數。 任何名副其實的優化器都會內聯這個電話。
我的第一個猜測是你在錯誤的領域進行優化。 在這種情況下,優秀的編譯器將優化。 混淆代碼會使編譯器更難以這樣做。
從c ++書中找到答案:
宏名稱不能重載:
#define PRINT(a ,b ) cout <<(a )<<(b )
#define PRINT (a ,b ,c ) cout <<(a )<<(b )<<(c ) /* trouble?: redefines, does not overload */
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.