精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊預編譯#Error的使用,你學會了嗎?

開發 前端
相信大家也看出來了,這樣管理參數地址,就顯得很合理,不會想增加一個參數時,不知道哪個扇區是空閑的,找到了一個扇區,還是擔心受怕,害怕和別的參數存儲地址沖突將其覆蓋。

?引言

說到預編譯,大家立刻就能想到#define、#if、#ifdef和#ifndef等熟悉的預編譯命令。其實#include,我們通常放在源文件用來包含頭文件,它也是預編譯命令。當然這不是這篇文章的重點。

這篇文章主要講解下#error預編譯命令,對于什么是預編譯,預編譯的作用等基礎知識點不再講解,不懂的同學請自行百度。

在MCU的開發中,我們經常需要用到Flash存儲一些參數,且通常情況下有很多參數需要存儲。

一般采用一個扇區存儲一種類型的參數(可能造成Flash空間浪費),但對于一些內部Flash容量很大的MCU,這樣做也是可行的。

示例demo如下:

#define PARA_BATTERY_ADDR   0x08019000  //存儲電池參數#define PARA_ETH_ADDR    0x0801B800  //存儲網絡參數..........#define PARA_USER_CONFIG_ADDR 0x0801C400 //存儲用戶參數

很多開發工程師喜歡這樣做,如果參數少時還好,當有很多參數時,這將是一個噩夢。如果這些參數分散在各個文件中,閱讀這份源碼將是惡心他媽給惡心開門,惡心到家了。

當想增加一個參數存儲時,如果不很熟悉代碼,根本不知道哪個扇區是空閑的。

優化版本如下,將這這些宏定義統一定義在flashmap.h中。

#define PARA_STARADDR (0x08000+(100*1024))  //前100K用于存儲固件,參數存儲開始地址。#define FLASH_SECTOR_SIZE (2*1024)  //Flash每個扇區的大小
#define PARA_BATTERY_ADDR PARA_STARADDR //存儲電池參數#define PARA_BATTERY_SIZE (1*FLASH_SECTOR_SIZE) //電池參數所占空間大小
#define PARA_ETH_ADDR (PARA_BATTERY_ADDR+PARA_BATTERY_SIZE) //存儲網絡參數#define PARA_ETH_SIZE (2*FLASH_SECTOR_SIZE) //網絡參數所占空間大小

相信大家也看出來了,這樣管理參數地址,就顯得很合理,不會想增加一個參數時,不知道哪個扇區是空閑的,找到了一個扇區,還是擔心受怕,害怕和別的參數存儲地址沖突將其覆蓋。

當然它也有弊端,如果問你PARA_ETH_ADDR存儲地址,并不能立刻從代碼中看出,這個問題,我一般使用printf打印出來。

還有個問題,如果加了很多參數,最后一個參數地址大于Flash空間怎么辦,或者軟件設計一段Flash空間作為參數區,不被允許超過這個地址。

在這個代碼結構中,無法從代碼中直接獲取,有不行使用printf肉眼判斷,那么可以使用#error 解決這個問題。

#error

#error 是一種預編譯器指示字,用于生成一個編譯錯誤消息 。

用法:#error [message] //message為用戶自定義的錯誤提示信息,可缺省。

#error 可用于提示編譯條件是否滿足。編譯過程中的任何錯誤意味著無法生成最終的可執行程序。

上面的程序優化為

#define PARA_STARADDR (0x08000+(100*1024))  //前100K用于存儲固件,參數存儲開始地址。#define FLASH_SECTOR_SIZE (2*1024)  //Flash每個扇區的大小
#define PARA_BATTERY_ADDR PARA_STARADDR //存儲電池參數#define PARA_BATTERY_SIZE (1*FLASH_SECTOR_SIZE) //電池參數所占空間大小
#define PARA_ETH_ADDR (PARA_BATTERY_ADDR+PARA_BATTERY_SIZE) //存儲網絡參數#define PARA_ETH_SIZE (2*FLASH_SECTOR_SIZE) //網絡參數所占空間大小
#define PARA_END_ADDR (PARA_ETH_ADDR+PARA_ETH_SIZE)// 參數的結束地址#if #error#endif

這樣當你的參數最后地址大于0x0801E000,編譯器機會報錯,根本編譯不過,如下圖

圖片

類似的,#warning 用于生成編譯警告消息。warning可用來提示一些非致命錯誤。

其他用法

限定宏定義的數值范圍,下面SIZE被限制在0到100內。

#define#if SIZE < 0 || SIZE > 100#error#endifuint8_t buffer[SIZE];

指定使用VS編譯器

#ifndef#error#endif

判斷是否定義了某個宏,比如FreeRTOS源碼中

#ifndef configMINIMAL_STACK_SIZE    #error Missing definition:  configMINIMAL_STACK_SIZE must be defined in FreeRTOSConfig.h.  configMINIMAL_STACK_SIZE defines the size (in words) of the stack allocated to the idle task.  Refer to the demo project provided for your port for a suitable value.#endif

責任編輯:武曉燕 來源: 知曉編程
相關推薦

2024-08-19 10:24:14

2022-03-05 23:29:18

LibuvwatchdogNode.js

2023-07-10 08:36:21

工具pptword

2023-01-29 08:08:34

并發庫conc通用庫

2024-06-12 08:36:25

2022-12-26 07:48:04

敏捷項目

2024-03-05 10:09:16

restfulHTTPAPI

2024-02-02 11:03:11

React數據Ref

2024-04-29 06:55:34

RustMIDI應用程序

2023-03-07 07:50:15

Transactio事務代碼

2024-11-08 08:56:01

2023-06-05 08:36:04

SQL函數RANK()

2022-12-08 10:49:43

2022-09-26 08:49:11

Java架構CPU

2022-07-11 09:00:37

依賴配置文件Mybati

2022-04-13 09:01:45

SASSCSS處理器

2024-03-04 07:41:18

SpringAOPOOP?

2022-12-27 08:45:00

繪制菜單符號

2023-04-04 08:14:45

2024-10-17 10:00:59

點贊
收藏

51CTO技術棧公眾號

亚洲在线欧美| 国产精品入口免费视| 欧亚乱熟女一区二区在线| 1024在线看片你懂得| 972aa.com艺术欧美| 日本国产欧美一区二区三区| 国产又粗又硬视频| 日本精品视频| 日本高清不卡在线观看| 欧美另类videos| 可以在线观看的av| 国产精品白丝av| 日本午夜人人精品| 欧美人禽zoz0强交| 国产精品自拍区| 精品国产在天天线2019| 久久婷婷国产91天堂综合精品| 快射视频在线观看| 久久免费精品国产久精品久久久久| 成人激情在线播放| 久久久成人免费视频| 欧美日韩国产精品一区二区亚洲| 亚洲色图校园春色| 亚洲一区二区三区四区av| 成人国产精品一区二区免费麻豆 | 欧美色视频日本高清在线观看| 一区二区三区在线视频111| 人人妻人人澡人人爽久久av| 久久电影国产免费久久电影| 国产成人在线精品| 精品成人免费视频| 国内精品久久久久久久影视蜜臀| 日韩在线观看免费网站| 黄色在线观看av| 美女视频免费精品| 日韩视频中午一区| 成人日韩在线视频| 成人国产精品| 在线观看91视频| 青青视频在线播放| 岛国av在线播放| 亚洲成人av中文| 国产性生活免费视频| 久久日韩视频| 亚洲视频小说图片| 亚洲高清不卡一区| 岛国最新视频免费在线观看| 久久精品这里都是精品| 久久久免费看| 日韩在线无毛| 久久亚洲一级片| 精品无人区一区二区三区| 高清乱码毛片入口| 成人免费视频一区| 国产精品视频在线免费观看| 性网爆门事件集合av| 国产东北露脸精品视频| av一区二区三区四区电影| jizz国产视频| 国产福利精品一区二区| 欧美日韩一区二区三区在线看| 日韩视频免费播放| 国模雨婷捆绑高清在线| 一区二区三区av电影| 国产91沈先生在线播放| 国内高清免费在线视频| 黄色一区二区在线观看| 国产高清精品在线观看| 欧美亚洲大片| 欧美日韩免费在线视频| 国产性生活一级片| 中文字幕日韩高清在线| 亚洲国产成人爱av在线播放| 精品无码在线视频| 国产欧美日韩免费观看| 最近2019中文字幕第三页视频| 男人晚上看的视频| 红桃视频欧美| 日本精品久久久久影院| 亚洲影视一区二区| 国产一区 二区 三区一级| 国产午夜精品一区| 激情福利在线| 亚洲乱码国产乱码精品精的特点| 免费在线看黄色片| 欧美xo影院| 3d动漫精品啪啪| av av在线| 日韩影院二区| 久久久亚洲成人| 欧美超碰在线观看| 国产精品自产自拍| 久热国产精品视频一区二区三区| 99reav在线| 亚洲一区二区四区蜜桃| 久久久久久久久久福利| 国产日韩在线观看视频| 日韩精品在线观看一区二区| 成人做爰视频网站| 国产亚洲激情| 91网在线免费观看| 欧美孕妇孕交| 亚洲一区免费观看| 国产 porn| 精品成人自拍视频| 久久久精品在线| 无码一区二区三区在线观看| 国产成人精品免费| 天堂av一区二区| sis001亚洲原创区| 欧美喷潮久久久xxxxx| 美国黄色一级毛片| 欧美91视频| 国产精品欧美亚洲777777| 日本韩国在线观看| 亚洲欧美在线aaa| 精品久久久久久无码国产| 在线观看视频一区二区三区 | 亚洲aⅴ日韩av电影在线观看| 午夜av免费在线观看| 亚洲蜜臀av乱码久久精品| 91av俱乐部| 香蕉国产成人午夜av影院| 欧美激情xxxx性bbbb| 国产一区二区在线视频观看| 国产无人区一区二区三区| 久久综合九色综合88i| 精品久久免费| 精品国内产的精品视频在线观看| 亚洲天堂男人av| 91麻豆swag| 日韩av一二三四区| 欧美激情网址| 午夜精品视频网站| 亚洲第九十九页| 伊人色综合久久天天| 亚洲成人福利在线| 成人影院天天5g天天爽无毒影院| 欧美亚洲另类在线| 熟妇高潮一区二区高潮| 亚洲第一主播视频| 乱码一区二区三区| 国产综合网站| 高清国产在线一区| 黑人另类精品××××性爽| 欧美成va人片在线观看| 免费在线观看黄视频| 国产伦精品一区二区三区免费迷| ijzzijzzij亚洲大全| 日日夜夜综合| 美女精品久久久| av中文字幕第一页| 洋洋av久久久久久久一区| 天堂av2020| 欧美手机视频| 国产美女精品免费电影| 欧美a在线看| 在线成人av网站| 私库av在线播放| 成人三级在线视频| 欧美成人xxxxx| 国产一区二区精品福利地址| 国产精品高清免费在线观看| shkd中文字幕久久在线观看| 欧美男女性生活在线直播观看 | 亚洲成a人在线观看| 69亚洲乱人伦| 午夜亚洲视频| 亚洲精品在线视频观看| 亚洲a成人v| 欧美日韩成人在线视频| 色婷婷av一区二区三区之红樱桃| 欧美日韩裸体免费视频| 亚洲精品乱码久久久久久久久久久久| 日本网站在线观看一区二区三区 | 欧美性淫爽ww久久久久无| 成年人免费视频播放| 国产真实乱子伦精品视频| 国产成人一区二区三区别| 亚洲春色h网| 成人av色在线观看| av电影在线免费| 亚洲日韩欧美视频一区| 国产欧美一区二区三区视频在线观看| 亚洲一级二级在线| 丝袜美腿中文字幕| 国产自产2019最新不卡| 激情深爱综合网| 欧美亚洲在线日韩| 国产精品theporn88| 日韩高清在线| 欧美激情在线有限公司| av在线中文| 亚洲福利在线视频| 中文字幕 自拍偷拍| 婷婷综合另类小说色区| 人与动物性xxxx| 91色porny| 人妻换人妻仑乱| 亚洲一区二区三区高清| 熟女熟妇伦久久影院毛片一区二区| 都市激情久久| 成人xxxxx| 97久久香蕉国产线看观看| 美女扒开尿口让男人操亚洲视频网站| 精品99又大又爽又硬少妇毛片| 欧美一卡二卡在线观看| 男人天堂av在线播放| 亚洲一区二区黄色| 91精品少妇一区二区三区蜜桃臀| 26uuu另类欧美亚洲曰本| 欧美激情第四页| 日本不卡免费在线视频| 国模无码视频一区二区三区| 综合国产在线| 伊人av成人| 免费毛片在线不卡| 国产伦精品一区二区三区免费视频| 91国产一区| 国产精品爱久久久久久久| 小视频免费在线观看| 欧美成人国产va精品日本一级| 1pondo在线播放免费| 亚洲色图美腿丝袜| 日韩福利一区二区| 日韩高清av在线| 亚洲老妇色熟女老太| 91精品国产综合久久精品麻豆| 自拍偷拍第八页| 色综合天天综合色综合av| 日韩免费视频网站| 一区二区三区蜜桃| 国产高潮国产高潮久久久91| 国产精品美女久久久久久久久久久 | 成人久久18免费网站麻豆| 国产精品久久久久久9999| 蜜桃一区二区三区在线| 啊啊啊国产视频| 日韩中文字幕1| 久久人妻精品白浆国产| 亚洲欧美日韩国产一区二区| 成年人视频观看| 久久高清一区| 999精品视频在线| 日本v片在线高清不卡在线观看| 91视频免费版污| 日本一不卡视频| 一道本视频在线观看| 毛片一区二区三区| 日本在线一二三区| 激情五月激情综合网| 天堂av在线8| 国产一区999| 最新国产精品自拍| 99视频在线观看一区三区| 中文文字幕文字幕高清| 久久综合色之久久综合| 国产特黄级aaaaa片免| 国产亚洲欧美中文| 最新日韩免费视频| 日韩一区在线播放| 久草视频免费播放| 五月天网站亚洲| av毛片在线免费观看| 欧美系列亚洲系列| 99久久久久久久| 精品福利在线导航| 日韩一二三四| 综合网中文字幕| 毛片激情在线观看| 欧美激情性做爰免费视频| 色老头在线一区二区三区| 国产成人精品一区二区三区| 成人在线视频观看| 91精品国产一区二区三区动漫| 国产精品美女在线观看直播| 免费在线国产精品| 亚洲xxx拳头交| 777av视频| 青青草97国产精品免费观看| 成人免费播放视频| 99视频一区二区| 丰满的亚洲女人毛茸茸| 亚洲欧洲精品一区二区精品久久久| 欧美精品乱码视频一二专区| 色综合久久久久综合| 国产一区二区三区三州| 亚洲成人激情在线观看| 99青草视频在线播放视| 欧美精品xxx| 91国内外精品自在线播放| 2022国产精品| 国产精品欧美三级在线观看| 在线观看18视频网站| 欧美一级专区| 少妇熟女视频一区二区三区| 国产日本欧美一区二区| 久草网在线观看| 欧美日韩成人综合| 视频国产一区二区三区| 欧美老女人在线视频| 欧美精品高清| 国产精品一国产精品最新章节| 欧美肉体xxxx裸体137大胆| 国产尤物av一区二区三区| 日日摸夜夜添夜夜添国产精品| 国产综合内射日韩久| 国产精品少妇自拍| 国产精品xxxx喷水欧美| 制服丝袜亚洲精品中文字幕| 欧美日韩在线精品一区二区三区激情综| 久久久国产91| 91在线亚洲| 久久精品美女| 激情自拍一区| 欧美xxxxxbbbbb| 国产精品视频免费| 男人天堂av在线播放| 亚洲精品美女久久久| 色爱综合区网| 91午夜在线播放| 日韩黄色大片| 91淫黄看大片| 国产亚洲精品精华液| 日韩激情在线播放| 日韩欧美国产精品一区| 黄色成年人视频在线观看| 国产欧美在线视频| 成人羞羞视频播放网站| 国产xxxxx在线观看| av电影在线观看不卡| 精品无码人妻一区二区三区| 日韩欧美亚洲国产另类 | 精品国产一区二区三区久久久樱花| 久久国产精品网| 成年人国产精品| 国产主播在线观看| 日韩精品一区二区三区老鸭窝 | 青青草成人影院| 亚洲狼人综合干| 欧美国产精品一区二区三区| 欧美超碰在线观看| 永久免费看mv网站入口亚洲| 成人视屏在线观看| 特级西西444www大精品视频| 美女视频一区二区| 国精品人伦一区二区三区蜜桃| 欧美日韩国产一级片| 网友自拍视频在线| 成人在线免费观看视视频| 91精品国偷自产在线电影| 一级片免费在线观看视频| 一区二区不卡在线播放 | 免费一级特黄毛片| 成人国产精品视频| 在线观看免费国产视频| 国产丝袜精品视频| 成人交换视频| 五月天在线免费视频| 国产成人8x视频一区二区| 国产在线一区视频| 日韩国产精品视频| 日韩大尺度黄色| 一区在线电影| 国产凹凸在线观看一区二区| 久久久久久久极品| 中文字幕视频一区二区在线有码 | 亚洲综合视频网站| 精品久久久久久综合日本欧美| 成人影院在线视频| 天堂av一区二区| 国产91丝袜在线18| 欧美 日韩 精品| 日韩在线观看成人| a看欧美黄色女同性恋| 情侣黄网站免费看| 国产精品国产三级国产aⅴ无密码| 国产av精国产传媒| 97香蕉超级碰碰久久免费软件| 欧洲毛片在线视频免费观看| 九九九久久久久久久| 午夜精品一区二区三区电影天堂| 精品999视频| 99国精产品一二二线| 久久久人人人| 丰满少妇高潮久久三区| 亚洲美女免费精品视频在线观看| 欧美亚洲福利| 成年人午夜视频在线观看| 国产精品国产馆在线真实露脸| 粉嫩小泬无遮挡久久久久久| 国产精品中文在线| 伊人影院久久| 国产高清视频免费在线观看| 亚洲精品动漫久久久久| 祥仔av免费一区二区三区四区| 中国丰满人妻videoshd | av男人一区| 我要看一级黄色大片| 狠狠躁天天躁日日躁欧美|