[英]Va_list to access second argument
我嘗試編寫這樣的函數:
int solve(double* x, double xA, double xB, double zeps,
double funct(double x, double*), ...)
在這里,“ funct”是作為參數傳遞的另一個函數。 現在,我想使用va_list
來訪問此函數' funct'
的第二個參數,它是double*
。 所以我做:
va_list point_arg ;
va_start ( point_arg , funct ) ;
double pp = va_arg ( point_arg , double );
double * pp = va_arg ( point_arg , double * );
據我了解,我使用的第一個va_arg
成功地找到了函數'funct'的第一個參數,該參數為double。 但是,第二次使用va_arg
無法獲得正確的雙va_arg
指針(第二個參數)。 您知道這是否可行嗎?
您誤解了函數指針的工作方式。 函數指針是存儲函數時指向內存中位置的指針,並且不包含有關該函數參數的任何信息。 調用函數指針時,必須自己向函數提供參數。
所以,你不能訪問參數給funct
指針,因為這些參數還不存在。 它們僅在調用pointed-do函數后才存在,這大概會在代碼內部發生。
funct不使用省略號,您不能在上面應用va_list函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.