variadic-macros

    1熱度

    2回答

    Overloading Macro on Number of Arguments https://codecraft.co/2014/11/25/variadic-macros-tricks/ 我一直在尋找上述兩個環節,試圖讓下面的代碼工作: #define _GET_NUMBER(_0, _1, _2, _3, _4, _5, NAME, ...) NAME #define OUTPUT_AR

    1熱度

    1回答

    我已經得到了以下宏 #include <boost/preprocessor.hpp> #define DB_FIELD(...) BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__) #define DB_TOFIELD(type,name) \ private:\ type name##_;\ public:\ const

    0熱度

    1回答

    Microsoft Visual Studio Professional 2015版本14.0.25431.01更新3在編譯code below時發出錯誤。對我來說看起來像一個bug。 謝謝。 #include <iostream> #define A(a, b, c, ...) #__VA_ARGS__ #define B(...) A(__VA_ARGS__) int main()

    2熱度

    1回答

    我需要一個宏/模板函數,將包裝上的特定對象的一些方法的函數調用,即 ​​ 其中可以是任何類型的,以及銷燬和Destroy可以或可能不需要0到n個參數。在這個包裝內我需要做一些檢查。 我希望能夠調用該功能作爲包裝: DESTROY_CHECK(a.Destroy(p1,p2,...)) 或 DESTROY_CHECK(a, Destroy(p1,p2,...)) 我怎樣才能做到這一點?

    0熱度

    1回答

    我想實現一個調試打印機制,它允許運行時和編譯時過濾。過濾是通過一個熱門編碼掩碼完成的。 運行時過濾通過檢查函數中的掩碼來完成。如果該級別當前未設置,則返回。編譯時實際上會刪除對調試打印的調用。 編譯時間可以很容易地實現。 #include <stdio.h> #define PRINT_LEVEL_0 (0x0) #define PRINT_LEVEL_1 (0x1) #define PR

    1熱度

    1回答

    我試圖編寫一個宏來比較多個表達式的運行時間,並將其運行到牆上。我的問題可以濃縮爲下面的代碼: (defmacro test-m [& exprs] `(map #(.toString %) ~exprs)) 如果我把這種喜歡(test-m 1 2 3),我希望它可以沿着線生產代碼: (map #(.toString %) [1 2 3]) 這是完全有效的。但不幸的是,這實際上導致

    0熱度

    2回答

    中的ncurses printw函數這已被問到幾種不同的口味。但我仍然無法實現它的工作。這是我的函數定義。 void ncurses_add_line(const char *fmt, ...) { if (ncurses_window) { va_li

    1熱度

    1回答

    我需要打包一個宏以便可以使用函數訪問宏。 宏的定義如下: #define gDbgLog(fmt,...) dbgLog(g_pdbg,MODULE_NAME,__FUNCTION__,fmt,##__VA_ARGS__) ,我已經試圖把它包起來,如: void pMonDbgLog(char* fmt, ...) { va_list args; va_start(arg

    0熱度

    1回答

    我創建了一個日誌功能,一方面需要能夠解析任意數量的參數,但另一方面將總是通過__func__和這個(的調用對象)。 如果我使用只可變參數模板這樣 template<typename... Args> void log_device_message_template(const class *object, char const *func, char const

    1熱度

    2回答

    下零ARGS我想使用的宏如下所示: #define x(...) y(a,##__VA_ARGS__,b) 要擴大,像這樣: x(); -> y(a,b); x(1); -> y(a,1,b); 隨着-std=gnu99,它的工作原理完美。 隨着-std=c99但是,它看起來像這樣: x(); -> y(a,,b); x(1); -> y(a,1,b); 的##正在沒有什麼區別 -