最近我來到這個代碼:有沒有什麼好理由不使用'define'參數長度可變?
#define LOG(type, str) printf(str)
#define LOG1(type, str,arg1) printf(str,arg1)
#define LOG2(type, str,arg1,arg2) printf(str,arg1,arg2)
#define LOG3(type, str,arg1,arg2,arg3) printf(str,arg1,arg2,arg3)
#define LOG4(type, str,arg1,arg2,arg3,arg4) printf(str,arg1,arg2,arg3,arg4)
代碼最近寫。所以我想它可以用C99編譯。
我的問題是:爲什麼不使用可變參數長度的簡單宏?我們只會將自己限制在LOG
宏中,而沒有其他。更不用說,我們不需要添加LOG5
,LOG6
等。如果我們得到堆棧跟蹤,內存不足,會導致此解決方案有用的任何事情,會不會發生可怕的事情?
我是一個極簡主義者,如果我們可以得到更少的線條越好。但我在這裏錯過了什麼嗎?這是故意的還是錯誤的編碼習慣?
AFAIK如果代碼不是針對C99那麼這是您可以編寫宏的唯一方法。另外:我不知道爲什麼地球上這不是一個功能。 – Jon 2013-02-22 09:03:26
@Jon,假設你不想在發佈版本中登錄,你可以保存整個函數調用事務。不能去'__naked__'。哦,這也將擦除所有這些字符串文字的日誌行 – 2013-02-22 09:10:20
@RomanSaveljev:你必須說服我保存在函數調用*重要*第一。 :-) – Jon 2013-02-22 09:23:45