variadic-macros

    3熱度

    2回答

    我試圖通過參數的數量來重載一個宏。 當然,我實際上無法超載宏。 我一直在使用複雜的宏來選擇合適的宏(用事實,如果__VA_ARGS__不存在,它應該在它之前刪除最後昏迷 - GCC Reference)嘗試: #define TEST1() printf("TEST1"); #define TEST2() printf("TEST2"); #define CHOOSER(x, y,FUNC,

    2熱度

    1回答

    如何顛倒可變參數宏的參數?例如,我想 #define REVERSE(...) ??? REVERSE(A,B,C) // expands to C,B,A 我的目標是分離的正面和背面的參數: #define APPLY(FUN,...) FUN(__VA_ARGS__) #define FRONT(FIRST,...) FIRST #define REST(FIRST,...) _

    4熱度

    3回答

    我沿着線的創建中使用的宏生成文件: TODO_MSG = $(warning TODO: $(1)) $(call TODO_MSG, This part of the msg displays fine, but this part does not) 我可以得到它周圍的東西,如下列: BLAH := $(shell perl -e 'print join(" ", 2..200)' C

    0熱度

    1回答

    此問題是從https://stackoverflow.com/a/5365786/383306開始的後續操作。 #define _DEFINE_REF_INTERNAL2(id, ...) #define _DEFINE_REF_INTERNAL1(id) #define _VA_NARGS_2_IMPL(_1, _2, N, ...) N #define _VA_NARGS_2(...

    2熱度

    1回答

    我見過幾個問題,要求對變量FOR_EACH宏進行變化。不幸的是,所提供的答案與VC++ 10不兼容,因爲它將__VA_ARGS __作爲一個參數擴展到另一個宏時。請有人提供一個C++ 11兼容(因此向前兼容)的版本,仍然適用於VC++ 10。也許使用經常提到的「解決方法」,#define EXPAND(x) x,但是我不知道把這個放在哪裏以便獲得,例如,後者的一般部分this answer可以在V

    0熱度

    2回答

    我想基本上有一個宏縮短。 該宏,FOO(A,B,C)應擴展爲 defined(_FOO_A) || defined(_FOO_B) || defined(_FOO_C)。 GCC中使用可變參數宏而不是實際寫入3個函數(FOO(A),FOO(A,B),FOO(A,B,C))是可能的嗎?

    9熱度

    1回答

    #define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "native-activity", __VA_ARGS__)) #define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "native-activity", __VA_ARGS__)) 這是這兩個

    2熱度

    2回答

    我希望能夠做到這一點在我的預處理宏 #define dble double /* Just something that converts x to a double precision float. static_cast used as an illustration: */ #define dble(x) static_cast<double>(x) 我知道超載是不是C標準

    0熱度

    1回答

    我試圖以一種可重複的方式多次調用這個函數。 template<class T> void METADATA_METHODS_IMPL(std::string& metadata, const T &value, const std::string &key) { metadata += boost::format("%1%:%2%") % key % value(); } 我寫

    0熱度

    1回答

    此代碼的工作,當所有PARAMS傳遞給HTML_A預期: #include <stdio.h> #define HTML_A_fmt_void #define HTML_A_arg_void #define HTML_A_fmt_link(fmt, ...) " href=\""fmt"\"" #define HTML_A_arg_link(fmt, ...) ,__VA_ARGS__