久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2751|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

關(guān)于C語(yǔ)言結(jié)構(gòu)體內(nèi)的函數(shù)指針的用法

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:884307 發(fā)表于 2021-10-9 23:06 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
項(xiàng)目需要控制多個(gè)步進(jìn)電機(jī), 我的想法是使用結(jié)構(gòu)體來做多個(gè)步進(jìn)電機(jī)的獨(dú)立控制, 把控制函數(shù)的函數(shù)指針放在結(jié)構(gòu)體中調(diào)用.在實(shí)際測(cè)試的時(shí)候發(fā)現(xiàn)這種方式(結(jié)構(gòu)體)調(diào)用步進(jìn)電機(jī)的函數(shù)沒有反應(yīng), 不起作用(電機(jī)不轉(zhuǎn))

C語(yǔ)言代碼大概如
  1. //為閱讀方便, 將所有函數(shù)參數(shù)使用arg代替
  2. //*****************************main.c
  3. //嘗試在main.c中控制步進(jìn)電機(jī)

  4. #include "Stepper.h"

  5. void main(){
  6. Stepper stp;

  7. while(1){
  8.     //如果使用 "MotorClockwise(arg); "則電機(jī)正常工作
  9.     stp.MotorAntiClockwise(arg); //電機(jī)不工作
  10.     }
  11. }

  12. //***************************Stepper.h
  13. //定義了結(jié)構(gòu)體

  14. extern void MotorAntiClockwise(arg);
  15. extern void MotorClockwise(arg);
  16. extern void MotorSetAngle(arg);

  17. typedef struct
  18. {
  19.     void (*MotorAntiClockwise)(arg);
  20.     void (*MotorClockwise)(arg);
  21.     void (*MotorSetAngle)(arg);
  22. }Stepper;

  23. //***************************Stepper.c

  24. void MotorAntiClockwise(arg){
  25.     //code
  26. }

  27. void MotorClockwise(arg){
  28.     //code
  29. }

  30. void MotorSetAngle(arg){
  31.     //code
  32. }
復(fù)制代碼
求教大佬出現(xiàn)了什么錯(cuò)誤? 應(yīng)該如何解決?
非常感謝您的回復(fù)!

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:57657 發(fā)表于 2021-10-10 08:26 | 只看該作者
這是什么平臺(tái)的C語(yǔ)言程序? 請(qǐng)?zhí)峁┫?Stepper.h 里的內(nèi)容。
回復(fù)

使用道具 舉報(bào)

板凳
ID:884307 發(fā)表于 2021-10-10 11:54 | 只看該作者
npn 發(fā)表于 2021-10-10 08:26
這是什么平臺(tái)的C語(yǔ)言程序? 請(qǐng)?zhí)峁┫?Stepper.h 里的內(nèi)容。

感謝回復(fù), 平臺(tái)是C51, Stepper.h的內(nèi)容已經(jīng)在帖子里了
回復(fù)

使用道具 舉報(bào)

地板
ID:401564 發(fā)表于 2021-10-10 19:23 | 只看該作者
函數(shù)應(yīng)該是不能作為結(jié)體體成員的,結(jié)構(gòu)體是一種變量
回復(fù)

使用道具 舉報(bào)

5#
ID:429003 發(fā)表于 2021-10-10 19:49 | 只看該作者
結(jié)構(gòu)體自身只是一個(gè)類型聲明而已! 你必須對(duì)定義的類型實(shí)體變量初始化賦值才能調(diào)用!
比如:
const Stepper StepperInterface = {
    MotorAntiClockwise,
    MotorClockwise,
    MotorSetAngle,
};
回復(fù)

使用道具 舉報(bào)

6#
ID:884307 發(fā)表于 2021-10-15 19:13 | 只看該作者
Y_G_G 發(fā)表于 2021-10-10 19:23
函數(shù)應(yīng)該是不能作為結(jié)體體成員的,結(jié)構(gòu)體是一種變量

那有沒有什么方法能做到類似stp.MotorClockwise()這樣的調(diào)用呢?,這樣寫簡(jiǎn)單直觀, 我覺得比其他方法好的多
回復(fù)

使用道具 舉報(bào)

7#
ID:401564 發(fā)表于 2021-10-15 23:56 | 只看該作者
Kituro 發(fā)表于 2021-10-15 19:13
那有沒有什么方法能做到類似stp.MotorClockwise()這樣的調(diào)用呢?,這樣寫簡(jiǎn)單直觀, 我覺得比其他方法好的多

一個(gè)電機(jī)一個(gè)控制函數(shù)不就行了,有時(shí)候簡(jiǎn)潔不一定實(shí)用
回復(fù)

使用道具 舉報(bào)

8#
ID:935919 發(fā)表于 2021-10-16 17:00 | 只看該作者
你在結(jié)構(gòu)體里面定義一個(gè)指向函數(shù)的指針, 在結(jié)構(gòu)定義的時(shí)候, 把相應(yīng)的處理函數(shù)傳給它即可.
回復(fù)

使用道具 舉報(bào)

9#
ID:884307 發(fā)表于 2021-10-16 21:44 | 只看該作者
Y_G_G 發(fā)表于 2021-10-15 23:56
一個(gè)電機(jī)一個(gè)控制函數(shù)不就行了,有時(shí)候簡(jiǎn)潔不一定實(shí)用

嗯嗯,謝謝!!!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区免费视频 | 羞羞视频免费观 | 中文字幕免费视频 | 午夜色播 | 久久99精品久久久久久青青日本 | 在线欧美小视频 | 请别相信他免费喜剧电影在线观看 | 亚洲狠狠| 最新中文字幕在线 | 亚洲欧美国产精品久久 | 国产区视频在线观看 | 国产美女特级嫩嫩嫩bbb片 | 精品视频在线观看 | 天堂一区二区三区四区 | 久久久久国 | 中文字幕一区在线 | h在线 | 久久i | 国产一区二区观看 | 国产免费福利小视频 | 一区二区电影网 | 亚洲精品小视频在线观看 | 欧美一级久久 | 久久亚 | 国产日屁| 天天影视亚洲综合网 | 欧美日在线| 毛片的网址 | 91高清免费| 欧美又大粗又爽又黄大片视频 | 精品av| av性色全交蜜桃成熟时 | 日本偷偷操 | 精品一区二区三区四区视频 | 91高清在线 | 国产成人久久精品 | 亚洲激情一区二区三区 | 福利片一区二区 | 成人精品鲁一区一区二区 | 黄色在线免费观看 | 久草网址 |