問個問題,函式的可變引數c++和c有點不同
c++可以是:
void func(...){}的形式
--------
按照可變引數宏的實作而言,是需要函式擁有至少擁有一個引數(作為對堆疊上引數進行提取引數的參考地址),那c++的(...)是怎么實作的呢?
void func(...){
//如何提取引數?
}
intmain(){
func("嘿嘿嘿", 20, 12.00, 500);
return 0;
}
由于上述沒有明確的引數,只能看到函式正常傳遞引數,和可變引數宏一樣,但是我不知道這個(...)可以如何提取引數
沒法用va_list,va_start
uj5u.com熱心網友回復:
語法可以這樣,但實際沒應用場景吧uj5u.com熱心網友回復:
https://blog.csdn.net/qq_40946921/article/details/90648688使用C++11的初始化串列以及C++17any類,可以實作可變引數串列,但我感覺作用并不大
uj5u.com熱心網友回復:
我用#CSDN#這個app發現了有技術含量的博客,小伙伴們求同去《C++17 any類(萬能容器)詳解》, 一起來圍觀吧 https://blog.csdn.net/qq_40946921/article/details/90646022uj5u.com熱心網友回復:
配合宏是有的
uj5u.com熱心網友回復:
struct PrintMssageException :public std::exception{
template <typename... Args>
PrintMssageException(const char* s, const Args &... rest) :exception(s) {
std::cerr << "\nException rised! ";
if (s)
std::cout << s << "\n\t";
int a[sizeof...(rest) +1] = { (std::cerr << rest << " ", 0)... };
std::cerr << "\n";
}
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/272658.html
標籤:C++ 語言
上一篇:簡單問題有人能全答對嗎
下一篇:球球大佬看一下哪里有問題
