[英]structure of function using func arrays
請....
我正在嘗試使庫像基於struct的lib一樣,我想到達類似“ mats.basic.add(1,1);”之類的東西。
構建時的第一個錯誤是struct中的第一行(兩者都存在),然后是,盡管編輯器在點操作(如add或sub)之后提示我,但下一個錯誤是“未知成員添加,sub
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
typedef uint8_t (*p_fn1)(uint8_t,uint8_t);
uint8_t fn_add(uint8_t num1,uint8_t num2){
return num1+num2;
}
uint8_t fn_sub(uint8_t num1,uint8_t num2){
return num1-num2;
}
typedef struct mats {
p_fn1 add=fn_add;
p_fn1 sub=fn_sub;
}mats;
void init_mats(mats* t_mats){
t_mats->add=fn_add;
t_mats->sub=fn_sub;
}
int main()
{
mats mats_s;
init_mats(&mats_s);
uint8_t c=mats_s.add(1,1);
printf("%d",c);
return 0;
}
非常感謝
您在定義結構時嘗試初始化結構成員。 那是無效的語法。
從定義中刪除那些初始化器。
typedef struct mats {
p_fn1 add;
p_fn1 sub;
}mats;
如果要使用可以在類型上調用的方法,請使用C ++編寫程序。 它具有該功能; C沒有。
在純C語言中,沒有任何方法不會笨拙地編寫,運行緩慢和/或使用不適當的內存量。 您嘗試使用的特定方式根本不起作用,因為您嘗試在type上設置字段,而不是在該類型的實例上設置字段,但是即使您修復了該問題,仍然會遇到其他問題語言的基本限制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.