簡體   English   中英

宏定義中的參數數量

[英]Number of arguments in macro definition

我有一些模板化函數,由於模板類型而有不同數量的參數。 該函數用宏定義包裝。

#define SomeTemplate(TemplateType, Arguments) someFunc<TemplateType>(Arguments);

當我僅使用一個參數進行函數調用時,一切正常,但是我需要更多參數。 我看着boost它通過定義不同的宏來完成這些工作,如下所示:

#define TEMP_1(Arg1) someFunc<Template>(Arg1);
#define TEMP_2(Arg1, Arg2) someFunc<Template>(Arg1, Arg2);
#define TEMP_3(Arg1, Arg2, Arg3) someFunc<Template>(Arg1, Arg2, Arg3);

但是此代碼被標記為可編譯的可移植代碼。 有一種方法可以將一些定義與任意數量的參數一起使用。 我怎樣才能做到這一點?

這樣做的唯一方法是在宏定義中使用__VA__ARGS__ ,但是它不那么可移植,因為像VC6這樣的較舊的編譯器不支持var arg'ed宏,請參見: MSVC GCC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM