variadic-macros

    2熱度

    1回答

    是否有一個跨平臺的方法來包裝fprintf(),所以我可以有一個簡單的日誌記錄功能轉儲日誌文件或控制檯,並採用簡單的C printf()樣式格式字符串和參數列表? 現在,我做的,像這樣的東西: #define logIssue(fmt, ...) do { \ fprintf(stderr, "MY_PREFIX:%s:%s:%d > " fmt "\n", __FUNCTION__,

    0熱度

    2回答

    /* Debugging */ #ifdef DEBUG_THRU_UART0 # define DEBUG(...) printString (__VA_ARGS__) #else void dummyFunc(void); # define DEBUG(...) dummyFunc() #endif 我在C編程的不同頭文件中看到了這種符號,我基本上明白它是傳遞參數,但我不明白這

    1熱度

    3回答

    我想建造了一個宏以可變數量的參數,並以類似於例子的格式的第一個參數分配給每個隨後的下面示出的參數: Call: MACRO(F,A) Result: F:A Call: MACRO(F,A,B,C) Result: F:A F:B F:C 我見過https://github.com/swansontec/map-macro和遞歸解決辦法的通過一般概念: #define EVAL0(..

    11熱度

    1回答

    當擴展__VA_ARGS__時,Oracle Solaris Studio 12.3的C++預處理器完全刪除空白。 任何人都可以在他們的系統上確認這種行爲嗎?這是一個已知的編譯器錯誤嗎?有沒有解決這個問題的方法? 爲了說明,這裏是一個簡單的測試程序,vaargs.c: #include <stdio.h> #define PRINT(...) printf("%s\n", #__VA_ARGS

    0熱度

    2回答

    我試圖通過編寫宏將日誌打印到文件中。 我的宏的樣子,如下圖所示: #define LOG(fmt,...){\ FILE *F;\ F = fopen("output.txt","a");\ fprintf(F,fmt " %s %d",__VA_ARGS__,__FILE__,__LINE__);} ,我打算呼叫日誌的格式如下: LOG("values are

    0熱度

    2回答

    是否可以在宏中進行無效性檢查和訪問? 如: #define LOG(mystruct, severity, format, ...) ({ \ severity_t current = ERROR; \ if (mystruct) { \ current = mystruct->error_level; \ } \ if (severity >=

    2熱度

    1回答

    讓我們 class Item{ public: Item(int id,const char *name,const char *props=NULL); }; 我想寫: ITEM(1,FIRST); ITEM(2,SECOND, WithSomeProps); 與宏 #define ITEM(ID,NAME,...) new Item(ID,NAME, #__VA_ARG

    7熱度

    1回答

    我正在使用一些記錄宏,它們應該打印出由__PRETTY_FUNCTION__宏提供的信息,如果需要,還可以輸入最多兩個參數的名稱和值。 我的代碼的簡化版本,看起來像 template<typename Value1, typename Value2> void Log(std::string const& function, std::string const& variable_1

    4熱度

    2回答

    我想將一組可變參數傳遞給一個宏。我有以下宏這是不正確的: #define M_NARGS(...) M_NARGS_(__VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) #define M_NARGS_(_10, _9, _8, _7, _6, _5, _4, _3, _2, _1, N, ...) N #define M_CONC(A, B) M_

    0熱度

    1回答

    我想定義諸如宏 - #define log(lognumber,...) logreport(lognumber,__VA_ARGS__) 我想檢查異常情況下__VA_ARGS__這些參數用戶當用戶呼叫日誌可以通過()。請提供給我的異常情況進行__VA_ARGS__。 [更新自評:] 我的意思是,我想以這樣的方式,它應該打印特定數量的,我已經定義的錯誤logreport寫。 以一個例子一樣,如