一、可變巨集引數
在gnu c中,巨集可以接受可變數目的引數,就象函式一樣,例如:
#define pr_debug(fmt,arg...) \
printk(kern_debug fmt, ##arg)
用可變引數巨集(variadic macros)傳遞可變參數列
你可能很熟悉在函式中使用可變參數列,如:
void printf(const char* format, ...);
c99編譯器標準終於改變了這種局面,它允許你可以定義可變引數巨集(variadic macros),這樣你就可以使用擁有可以變化的參數列的巨集。可變引數巨集就像下面這個樣子:
#define debug(...) printf(__va_args__)
cpp使用乙個特殊的』##』操作。書寫格式為:## __va_args__ 這個運算子把兩個語言符號組合成單個語言符號,為巨集擴充套件提供了一種連線實際變元的手段
使用中:
二、容器列表initializer_list 缺點引數列表型別必須相同型別,適應性較差。使用簡單
標頭檔案:#include
int sum(initializer_listil)
return sum;
}
int ret = sum();
三、可變引數模板
template std::ostream &print(std::ostream &os, const t &t)
//包中除最後乙個元素之外的其他元素都會呼叫這個版本的pirnt
template std::ostream &print(std::ostream &os, const t &t, const args &... rest)
使用:
可變引數巨集 VA ARGS
可變引數巨集 va args 在 gnu c 中,巨集可以接受可變數目的引數,就象函式一樣,例如 define pr debug fmt,arg.printk kern debug fmt,arg 用可變引數巨集 variadic macros 傳遞可變參數列 你可能很熟悉在函式中使用可變參數列,如...
可變引數巨集 VA ARGS
可變引數巨集 va args 在 gnu c 中,巨集可以接受可變數目的引數,就象函式一樣,例如 define pr debug fmt,arg.printk kern debug fmt,arg 用可變引數巨集 variadicmacros 傳遞可變參數列 你可能很熟悉在函式中使用可變參數列,如 ...
可變引數巨集 VA ARGS
可變引數巨集 va args 在 gnu c 中,巨集可以接受可變數目的引數,就象函式一樣,例如 define pr debug fmt,arg.printk kern debug fmt,arg 用可變引數巨集 variadic macros 傳遞可變參數列 你可能很熟悉在函式中使用可變參數列,如...