簡體   English   中英

C ++ #define變量參數函數

[英]C++ #define variable parameter function

我有一個CPU敏感的應用程序,並希望最小化函數調用。 我想寫一些類似的東西:

#ifdef condition        
#define f(a,b) ff(a,b)   
#define f(a) ff(a)    
#endif    

但編譯器會將f視為多次定義。 我想使用__VAR_ARGS__但在上面的示例中, benum類型。 有沒有正確的方法,或者我應該將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM