2
我有如下所示,在那裏我有條目在表一中宏的情況:宏代
#define FOR_MY_TYPES(apply) \
apply(a, b, c) \
apply(d, e, f) \
....
我也有一些預處理條件:
#define CONDITION1 1
#define CONDITION2 0
我希望根據這些條件添加表中的一些條目,如下所示:
#define FOR_MY_TYPES(apply) \
apply(a, b, c) \
#if CONDITION1 || CONDITION2
apply(x, y, z)
#endif
實現此目的的最佳方法是隻保留一個宏定義,並且如果可能的話,根據條件避免重複條目。我想避免這種情況:
#if CONDITION1
#define FOR_MY_TYPES(apply) \
....Full table here...
#endif
#if CONDITION2
#define FOR_MY_TYPES(apply) \
//Full table again + CONDITION2 types
#endif
#if CONDITION1 || CONDITION2
#define FOR_MY_TYPES(apply) \
//Full table again + CONDITION1 || CONDITION2 types
#endif
我的問題是,有相當多的組合,所以我應該儘量避免複製。它也更容易出錯。
答案的號有一個問題問的最後一個星期左右的時間內這種情況下;這意味着可能還有其他更復雜的老問題。 –
代替'apply(x,y,z)'具有'APPLY_12(x,y,z)',其中該宏定義在'#ifCONDITION1‖中CONDITION2' –
嗯......我想到的問題是[在類似宏的宏中添加預處理器指令是錯誤的](http://stackoverflow.com/questions/39534609),但是場景略微不同 - 它是關於在參數列表中使用'#ifdef'宏調用的,而不是像這裏那樣在宏定義本身。我支持我的評論,直接回答是「不」。 (除此之外,反斜槓的問題仍然存在,或者不是宏定義的行。宏定義結束於何處?) –