定義相同的宏功能,我有一個函數如何根據不同的參數
void fun(int j, int i = 10);
我想通過微距功能調用的樂趣。
#define fun1(x) fun(10)
#define fun1(x, y) fun(x, y)
我該如何做到這一點?
定義相同的宏功能,我有一個函數如何根據不同的參數
void fun(int j, int i = 10);
我想通過微距功能調用的樂趣。
#define fun1(x) fun(10)
#define fun1(x, y) fun(x, y)
我該如何做到這一點?
爲什麼你想在這裏使用宏?在C++中,使用內聯函數會更容易和更習慣於使用內聯函數。
一般來說,如果您聲明問題,而不僅僅是想象中的解決方案,您可能會得到更好的幫助。
不能像參數函數那樣根據參數數量過載宏。
你最好只是調用函數。
我沒有描述整個場景。我需要這樣的功能。 – Pawan
@Pawan:那麼,你不是問問你有什麼問題,而是問另外一個問題,仍然希望得到正確答案?我們不介意讀者,對不起。 – MSalters
的#define UPUT_SET_CHECK_POINT0(APPTYPE,標籤,...)\ 如果(NUMARGS(## __ VA_ARGS__)== 0)\ UPUT_SET_CHECK_POINTx(0,APPTYPE,標籤,UPUT_P_INVALID,0,UPUT_P_INVALID,0,UPUT_P_INVALID,0,UPUT_P_INVALID ,0,UPUT_P_INVALID,0,__FILE__,__LINE__,UPUT_SEQUENTIAL); \ 其他\ UPUT_SET_CHECK_POINTx(0,APPTYPE,標籤,UPUT_P_INVALID,0,UPUT_P_INVALID,0,UPUT_P_INVALID,0,UPUT_P_INVALID,0,UPUT_P_INVALID,0,__FILE__,__LINE__,NEXT_ARG(## __ VA_ARGS__)) 在編譯我得到錯誤,如果NEXT_ARG(## __ VA_ARGS__)爲空 – Pawan
一些預處理器是有趣的嘗試:
#define fun1 fun
或者
#define fun1(...) fun(__VA_ARGS__)
或者
#define fun1(x...) fun(x)
你想通過宏定義調用的樂趣,還是要綁定函數的一個參數,所以你可以用1參數調用它? – juanchopanza
是的,我需要那個。我沒有描述整個場景。只是我卡住的一小部分。 – Pawan
爲什麼你想在這裏使用宏?在C++中,使用內聯函數會更容易和更習慣於使用內聯函數。一般來說,如果你陳述自己的問題*,而不僅僅是想象中的解決方案,你可能會得到更好的幫助。 –