我想執行函式引數中給出的函式。讓我用一個例子來解釋。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int object() {
printf("Hello, World!");
return 0;
}
int run_func( int a_lambda_function() ) {
a_lambda_function();
return 0;
}
int main() {
run_func( object() );
return 0;
}
現在,我想在“run_func( int a_lambda_function() ”)的引數中運行“object()”。當我運行它時,它回傳一個錯誤。我將如何實作全 C?
我的限制:
- 絕對不允許 C 。
uj5u.com熱心網友回復:
函式可以作為引數傳遞,也可以作為函式指標存盤到變數中。
與您的函式兼容的函式指標的定義object是int (*funcp)():指向一個函式的指標,該函式采用未指定數量的引數并回傳int.
在現代 C 中,不再使用具有未指定數量引數的函式,并且必須使用(void)引數串列宣告不帶引數的函式。
這是修改后的版本:
#include <stdio.h>
int object(void) {
printf("Hello, World!");
return 0;
}
int run_func(int (*a_lambda_function)(void)) {
return a_lambda_function(); // can also write (*a_lambda_function)()
}
int main() {
return run_func(object);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/488746.html
