對于這個帶有可變數量引數的函式,
void func(int count, ...) // ellipsis function
{
// function definition
}
可以像下面這樣進行函式呼叫:
int a{};
double b{};
string c{};
func(3,a,b,c); // using actual variables instead of fixed values in function call
我的問題是,當呼叫省略號函式時,它是否總是必須fixed像這樣的值,func(3,5,2.7,"Hi")或者可以像這樣在函式呼叫中提供變數func(3,a,b,c)?
uj5u.com熱心網友回復:
請注意,傳遞類,如std::string具有非平凡復制建構式或非平凡移動建構式或非平凡解構式的類,可能不受支持并且具有“實作定義”語意。您必須檢查有關如何傳遞此類類的編譯器檔案或檢查它們是否完全受支持。
變數可以在 C 中省略號函式的函式呼叫中使用嗎
是的。
可以像下面這樣進行函式呼叫嗎
是的。
當呼叫省略號函式時,它總是必須是固定值,如 func(3,5,2.7,"Hi")
不。
可以像 func(3,a,b,c) 那樣在函式呼叫中提供變數嗎?
是的。
你能推薦任何參考資料,以便我可以對其進行一些研究嗎?
https://en.cppreference.com/w/cpp/language/variadic_arguments https://en.cppreference.com/w/cpp/utility/variadic https://eel.is/c draft/expr#call -12
在 C 中,您應該強烈推薦:https://en.cppreference.com/w/cpp/language/parameter_pack,因為型別安全。
uj5u.com熱心網友回復:
盡管省略號為我們提供了一些有用的功能,但使用它們是非常危險的。使用省略號時,編譯器不會檢查傳遞給函式的引數型別。因此,如果引數型別不同,編譯器不會拋出任何錯誤。即使傳遞 string、double 或 bool 型別的值被傳遞給 average() 函式,它回傳一個意外的值,編譯器也不會拋出任何錯誤。
來源:https : //www.geeksforgeeks.org/ellipsis-in-c-with-examples/
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/364594.html
