|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
DSP TI C2000中c語言一個定義問題? |
| 作者:SOCO_DA 欄目:技術(shù)交流 |
使用DSP TMS320LV2407A 編譯器版本V2.2 首先我定義如下一個頭文件 svpwm.h: #ifndef _SVPWM_H_ #define _SVPWM_H_ #define PIBY3 10923 typedef struct { void (*calc) (void*); unsigned step_max; int ALPHA; unsigned sector; unsigned f; unsigned ul_max; unsigned udc; unsigned tl,tm; unsigned vect; }SVPWM; #define SVPWM_DEFAULTS {\ (void (*)(void*)) svpwm_calc,\ 839,\ 0,\ 0} typedef SVPWM *SVPWM_Handle; void svpwm_calc (SVPWM_Handle); #endif //_SVPWM_H_ 然后在 svpwm.c文件,初始化如下: #include "svpwm.h" SVPWM svpwm=SVPWM_DEFAULTS; 在編譯過程中提示出錯語句 syntax error at or near symbol 'void' 該語句指(void (*)(void*)) svpwm_calc 這個函數(shù)出錯。 究竟錯在那?該語句如何理解 (void (*)(void*))這兩個void ?? |
| 2樓: | >>參與討論 |
| 作者: 赤鑄 于 2005/9/4 16:13:00 發(fā)布:
純屬自找麻煩,干嗎不簡化問題? C語言中這種類似的問題,最簡單的辦法就是用typedef,多定義幾個類型名,而不要用這種復(fù)雜的隱式類型定義 思路不錯,但C語言基礎(chǔ)還是有欠缺。你這是一個典型的包含“對自身的指針引用的回調(diào)函數(shù)”的結(jié)構(gòu)類型(有點(diǎn)拗口),正規(guī)寫法應(yīng)該這樣: typedef struct tagSVPWM SVPWM; typedef SVPWM *SVPWM_Handle; typedef void (*SVPWM_CALC) (SVPWM_Handle); struct tagSVPWM { SVPWM_CALC calc; unsigned step_max; int ALPHA; unsigned sector; unsigned f; unsigned ul_max; unsigned udc; unsigned tl,tm; unsigned vect; }; #define SVPWM_DEFAULTS {\ (SVPWM_CALC) svpwm_calc,\ 839,\ 0,\ 0} void svpwm_calc (SVPWM_Handle); 這樣類型完全一致,不存在強(qiáng)制類型轉(zhuǎn)換,也不容易出現(xiàn)語法錯誤 |
|
| 3樓: | >>參與討論 |
| 作者: SOCO_DA 于 2005/9/5 7:53:00 發(fā)布:
樓上方法很好 (void (*) (void *))) svpwm_calc 是指針函數(shù)強(qiáng)制類型轉(zhuǎn)換 第一個void(*)()代表是指針函數(shù)強(qiáng)制類型轉(zhuǎn)換,那么第二個 void * 表示什么?是否表示無返回。這個"*"能否去掉? |
|
| 4樓: | >>參與討論 |
| 作者: soco_da 于 2005/9/5 8:12:00 發(fā)布:
還有一個問題? typedef void (*SVPWM_CALC) (SVPWM_Handle); SVPWM_CALC calc; (SVPWM_CALC) svpwm_calc, 這三個定義如何理解? |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |