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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2792|回復: 8
打印 上一主題 下一主題
收起左側

關于C語言結構體內的函數指針的用法

[復制鏈接]
跳轉到指定樓層
樓主
ID:884307 發表于 2021-10-9 23:06 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
項目需要控制多個步進電機, 我的想法是使用結構體來做多個步進電機的獨立控制, 把控制函數的函數指針放在結構體中調用.在實際測試的時候發現這種方式(結構體)調用步進電機的函數沒有反應, 不起作用(電機不轉)

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

  4. #include "Stepper.h"

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

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

  12. //***************************Stepper.h
  13. //定義了結構體

  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. }
復制代碼
求教大佬出現了什么錯誤? 應該如何解決?
非常感謝您的回復!

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

使用道具 舉報

沙發
ID:57657 發表于 2021-10-10 08:26 | 只看該作者
這是什么平臺的C語言程序? 請提供下 Stepper.h 里的內容。
回復

使用道具 舉報

板凳
ID:884307 發表于 2021-10-10 11:54 | 只看該作者
npn 發表于 2021-10-10 08:26
這是什么平臺的C語言程序? 請提供下 Stepper.h 里的內容。

感謝回復, 平臺是C51, Stepper.h的內容已經在帖子里了
回復

使用道具 舉報

地板
ID:401564 發表于 2021-10-10 19:23 | 只看該作者
函數應該是不能作為結體體成員的,結構體是一種變量
回復

使用道具 舉報

5#
ID:429003 發表于 2021-10-10 19:49 | 只看該作者
結構體自身只是一個類型聲明而已! 你必須對定義的類型實體變量初始化賦值才能調用!
比如:
const Stepper StepperInterface = {
    MotorAntiClockwise,
    MotorClockwise,
    MotorSetAngle,
};
回復

使用道具 舉報

6#
ID:884307 發表于 2021-10-15 19:13 | 只看該作者
Y_G_G 發表于 2021-10-10 19:23
函數應該是不能作為結體體成員的,結構體是一種變量

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

使用道具 舉報

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

一個電機一個控制函數不就行了,有時候簡潔不一定實用
回復

使用道具 舉報

8#
ID:935919 發表于 2021-10-16 17:00 | 只看該作者
你在結構體里面定義一個指向函數的指針, 在結構定義的時候, 把相應的處理函數傳給它即可.
回復

使用道具 舉報

9#
ID:884307 發表于 2021-10-16 21:44 | 只看該作者
Y_G_G 發表于 2021-10-15 23:56
一個電機一個控制函數不就行了,有時候簡潔不一定實用

嗯嗯,謝謝!!!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品综合一区二区 | 人人干人人超 | 羞羞的视频免费在线观看 | 欧美一级片在线看 | 国产日韩精品一区二区 | 久久一区精品 | 亚洲三区在线观看 | 成人免费看黄 | 亚洲精品视频在线播放 | 伊人伊成久久人综合网站 | 2019天天干夜夜操 | 国产欧美综合在线 | 国产精品一区二区三 | 久久亚洲欧美日韩精品专区 | 日韩欧美在线免费 | 福利网址 | 国产99视频精品免视看9 | 在线国产一区二区 | 成人av观看 | 四虎影院美女 | 中文字幕在线一区 | 九九亚洲 | 欧美精品久久久久久久久久 | 一区二区三区中文字幕 | 在线欧美亚洲 | 久久99精品久久久97夜夜嗨 | 色婷婷激情综合 | 久久成 | 国产日韩欧美在线观看 | 九九热在线免费视频 | 久久久综合网 | 毛片韩国 | 国产在线视频在线观看 | 国产成人精品久久二区二区 | 日韩在线资源 | 亚洲成色777777在线观看影院 | 91在线综合| 黄网站在线播放 | 午夜影视免费片在线观看 | 成人免费av | 一二区成人影院电影网 |