2012-05-07 61 views
0

定義相同的宏功能,我有一個函數如何根據不同的參數

void fun(int j, int i = 10); 

我想通過微距功能調用的樂趣。

#define fun1(x) fun(10) 

#define fun1(x, y) fun(x, y) 

我該如何做到這一點?

+0

你想通過宏定義調用的樂趣,還是要綁定函數的一個參數,所以你可以用1參數調用它? – juanchopanza

+0

是的,我需要那個。我沒有描述整個場景。只是我卡住的一小部分。 – Pawan

+0

爲什麼你想在這裏使用宏?在C++中,使用內聯函數會更容易和更習慣於使用內聯函數。一般來說,如果你陳述自己的問題*,而不僅僅是想象中的解決方案,你可能會得到更好的幫助。 –

回答

3

爲什麼你想在這裏使用宏?在C++中,使用內聯函數會更容易和更習慣於使用內聯函數。

一般來說,如果您聲明問題,而不僅僅是想象中的解決方案,您可能會得到更好的幫助。

2

不能像參數函數那樣根據參數數量過載宏。

你最好只是調用函數。

+0

我沒有描述整個場景。我需要這樣的功能。 – Pawan

+0

@Pawan:那麼,你不是問問你有什麼問題,而是問另外一個問題,仍然希望得到正確答案?我們不介意讀者,對不起。 – MSalters

+0

的#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

0

一些預處理器是有趣的嘗試:

#define fun1 fun 

或者

#define fun1(...) fun(__VA_ARGS__) 

或者

#define fun1(x...) fun(x)