簡體   English   中英

Va_list訪問第二個參數

[英]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.

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