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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2084|回復: 8
收起左側

這段C語言宏定義代碼是什么意思?

[復制鏈接]
ID:700956 發表于 2023-10-25 08:38 | 顯示全部樓層 |閱讀模式
這段代碼怎么理解,宏定義不是代表一個變量嗎,像這樣#define MAXTIME 1000,怎么還能代表多個?
  1. /*******************************************************************
  2.                             AD按鍵表
  3. *******************************************************************/
  4. #define ADKEY_BT_SHORT                \
  5.                         /*00*/    NO_MSG,\
  6.                         /*01*/    NO_MSG,\
  7.                         /*02*/    MSG_BT_CALL_REJECT,\
  8.                         /*03*/    MSG_BT_CALL_HANGUP,\
  9.                         /*04*/    MSG_BT_CALL_LAST_NO,\
  10.                         /*05*/    MSG_EQ_MODE,\
  11.                         /*06*/    MSG_CHANGE_WORKMODE,\
  12.                         /*07*/    MSG_BT_PREV_FILE,\
  13.                         /*08*/    MSG_BT_NEXT_FILE,\
  14.                         /*09*/    MSG_BT_PP,


  15. #define ADKEY_BT_LONG                \
  16.                         /*00*/    NO_MSG,\
  17.                         /*01*/    NO_MSG,\
  18.                         /*02*/    NO_MSG,\
  19.                         /*03*/    NO_MSG,\
  20.                         /*04*/    NO_MSG,\
  21.                         /*05*/    NO_MSG,\
  22.                         /*06*/    NO_MSG,\
  23.                         /*07*/    MSG_VOL_DOWN,\
  24.                         /*08*/    MSG_VOL_UP,\
  25.                         /*09*/    MSG_POWER_OFF,

  26. #define ADKEY_BT_HOLD                \
  27.                         /*00*/    NO_MSG,\
  28.                         /*01*/    NO_MSG,\
  29.                         /*02*/    NO_MSG,\
  30.                         /*03*/    NO_MSG,\
  31.                         /*04*/    NO_MSG,\
  32.                         /*05*/    NO_MSG,\
  33.                         /*06*/    NO_MSG,\
  34.                         /*07*/    MSG_VOL_DOWN,\
  35.                         /*08*/    MSG_VOL_UP,\
  36.                         /*09*/    MSG_POWER_OFF_HOLD,

  37. #define ADKEY_BT_LONG_UP        \
  38.                         /*00*/    NO_MSG,\
  39.                         /*01*/    NO_MSG,\
  40.                         /*02*/    NO_MSG,\
  41.                         /*03*/    NO_MSG,\
  42.                         /*04*/    NO_MSG,\
  43.                         /*05*/    NO_MSG,\
  44.                         /*06*/    NO_MSG,\
  45.                         /*07*/    MSG_VOL_KEY_UP,\
  46.                         /*08*/    MSG_VOL_KEY_UP,\
  47.                         /*09*/    MSG_POWER_KEY_UP,


  48. const u16 task_bt_ad_table[4][KEY_REG_AD_MAX] = {
  49.     /*短按*/            {ADKEY_BT_SHORT},
  50.     /*長按*/                {ADKEY_BT_LONG},
  51.     /*連按*/                {ADKEY_BT_HOLD},
  52.     /*長按抬起*/        {ADKEY_BT_LONG_UP},
  53. };
復制代碼


回復

使用道具 舉報

ID:1093026 發表于 2023-10-25 08:52 | 顯示全部樓層
替換進去,就是一個二維數組
回復

使用道具 舉報

ID:883242 發表于 2023-10-25 11:25 | 顯示全部樓層
這四個就是二維數組task_bt_ad_table的初值。
回復

使用道具 舉報

ID:628113 發表于 2023-10-25 17:25 | 顯示全部樓層
樓主 低估宏定義了。  宏定義可以代替 幾乎  所有東西 ,除了不含分割/運算符的特殊情況。

宏定義的含義是, 在編譯時 , 用 宏 替換掉 源程序。
所以 宏不但可以是變量, 也可以是 函數,甚至是整個程序的一部分代碼。幾乎可以是任何東西。

不好用的情況是沒有分割運算符, 例如:
#define MM  "Matix"
函數 int  GetMatix();    不能替換為 int GetMM() ;
回復

使用道具 舉報

ID:1094811 發表于 2023-10-25 22:36 來自觸屏版 | 顯示全部樓層
宏定義是編譯器最開始編譯的,編譯器做的事很簡單,直接文本替換
回復

使用道具 舉報

ID:883242 發表于 2023-10-25 23:28 | 顯示全部樓層
ppcbug 發表于 2023-10-25 17:25
樓主 低估宏定義了。  宏定義可以代替 幾乎  所有東西 ,除了不含分割/運算符的特殊情況。

宏定義的含義 ...

可以用##連接符。
回復

使用道具 舉報

ID:108361 發表于 2023-10-26 14:37 | 顯示全部樓層
宏只是文本替換,本質上就是替換編輯器里的字符
回復

使用道具 舉報

ID:108361 發表于 2023-10-26 14:38 | 顯示全部樓層
只不過宏有一些操作符,比純粹的手寫字符多了一點功能,不如##連接符號,我記得contiki這個協程操作系統就是巧妙利用宏的操作符,將一個巨大的switchcase偽裝成了一個多任務系統的樣式
回復

使用道具 舉報

ID:401564 發表于 2023-10-26 22:07 | 顯示全部樓層
宏定義就是文本替換
可以對一個文本進行多個定義,方便代碼編寫
比如,控制端口低電平開啟PNP三極管可以這樣定義
#define ON 0
#define OFF 1
LED = ON;要比 LED = 0;更好理解
如果程序中還有其它是要高電平開啟的,就可以這樣定義
#define HI 1
#define LOW 0
這樣程序理起來就不會一下子0開,一下子1開.....思維不會過于別扭
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄色成人毛片 | 国产一区精品在线观看 | 国产精品偷乱一区二区三区 | 中文字幕日韩高清 | 无套内谢的新婚少妇国语播放 | 91综合在线 | 91精品久久久久 | 天堂网在线资源 | 在线日韩视频 | 成人午夜毛片 | 91精品国产99久久久久久红楼 | 天天射日日干 | 国产一区二区在线播放 | 欧美日韩一区二区在线 | 久久久久久国产精品 | 午夜在线免费观看 | 日韩欧美不卡 | 欧美精品第一页 | 国产免费久久 | 高清乱码男女免费观看 | www操 | 成人午夜在线视频 | 一级肉体全黄裸片 | 黄色福利| 婷婷综合五月 | 久久久精品一区二区 | 国产精品成人国产乱 | 国产一级片网站 | 一区免费视频 | 日本特级淫片 | 好色综合 | 国产极品在线观看 | 女人久久久 | 美女一级片 | 免费黄色一级片 | 激情91 | a级片在线 | 久草视频免费在线观看 | 国产尤物视频 | 免费黄网站 | 中文字幕一区二区三区视频 |