c - 如何製作可變宏(可變數量的參數)

c - 如何製作可變宏(可變數量的參數)

我想用C語言編寫一個宏,它接受任意數量的參數,而不是一個特定的數字 例:#define macro( X)something_complicated( whatever( X)) 其中X是任意數量的參數 我需要這個,因為whatever重載,可以用2或4參數調用。 我試著兩次定義宏,但第二個定義覆蓋了第一個! 我正在使用的編譯器是g++(更具體地說,mingw)…


C++預處理器__VA_ARGS__參數個數

簡單的問題,我無法在網上找到答案。 在可變參數宏中,如何找到參數個數? 如果有解決方案,我可以使用boost預處理器。 如果它有所作為,我試圖轉換可變數量的宏參數來增強預處理器序列,列表或數組以便進一步重新處理。…


visual c++ - MSVC無法正確擴展__VA_ARGS__

考慮以下代碼:#define F(x,...) X=x and VA_ARGS=__VA_ARGS__#define G(...) F(__VA_ARGS__) F(1, 2, 3) G(1, 2, 3) 兩個宏的預期輸出是X=1 and VA_ARGS=2, 3這就是我用GCC得到的,但是,MSVC擴展為: X=1 and VA_ARGS=2, 3 X=1…


標準替代GCC的##__ VA_ARGS__技巧?

在C99中,可變宏的空參數存在一個well-known problem 。 例:#define FOO(...) printf(__VA_ARGS__)#define BAR(fmt,...) printf(fmt,__VA_ARGS__) FOO("this works fine"); BAR("this breaks!"); 根據C99標準,上述BAR()的使用…



c - 宏來計算參數的數量

我有一個來自第三方C庫的可變參數函數: int func(int argc,...); argc表示傳遞的可選參數的個數。 正如這裡所建議的那樣,我用一個包含參數個數的宏包裝它。 為了方便閱讀,下面是這個宏:#define PP_ARG_N( \_1,_2,_3,_4,_5,_6,_7,_8,_9,_10, \_1…


c++ - 可以通過參數的數量來重載宏嗎?

這是如何工作的? 如何實現C99/C++ 11可變參數宏以根據給出多少參數來擴展到不同的東西?…


c - 嗯,你是誰PRIu64?

我是C新手,面臨著:#include<stdio.h>#include<inttypes.h> int main(void){uint64_t foo=10; printf("foo is equal to %" PRIu64 "!\n", foo); return 0;}它的工作原理! 我不明白為什麼? 有人可以幫我嗎? 非常感謝! 托…




args va_args define macro function __va_args__用法 variable printf parameter multiple