精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

极品蜜桃臀肥臀-x88av| 91免费视频网站在线观看| 国产黄频在线观看| 99视频+国产日韩欧美| 亚洲欧美日韩中文在线制服| 免费看黄色一级大片| av在线app| 97精品电影院| 国产欧美一区二区三区视频| 欧美日韩一级在线观看| 嫩草影视亚洲| 欧美一级欧美三级在线观看| 欧美a在线视频| 91麻豆一二三四在线| 91丨九色porny丨蝌蚪| 国产专区欧美专区| 黄色大片网站在线观看| 先锋资源久久| 亚洲乱码一区二区| 久草福利在线观看| 日韩在线短视频| 夜夜精品视频一区二区| 日韩久久久久久久久久久久久| a网站在线观看| 日韩高清国产一区在线| 久久精品国产成人| 日本少妇高潮喷水xxxxxxx| 亚洲一区二区三区免费| 欧美日韩久久久| 免费毛片小视频| 七七久久电影网| 国产精品久久久久久福利一牛影视| 国内不卡一区二区三区| 国产免费久久久| 蜜桃精品视频在线观看| 91av视频导航| 日本天堂在线视频| 欧美视频在线观看| 久久在精品线影院精品国产| 欧美激情久久久久久久| 色吊丝一区二区| 精品久久久久一区| 毛片毛片毛片毛片毛| 色婷婷成人网| 欧美三级在线播放| 亚洲黄色a v| 欧美大片免费观看网址| 精品久久久久久亚洲精品| www.成年人视频| 91亚洲天堂| 亚洲精品五月天| 熟妇熟女乱妇乱女网站| 蜜桃视频在线观看www社区| 国产精品视频免费看| 日本欧美精品久久久| 青青草av免费在线观看| 91一区一区三区| 蜜桃麻豆91| 久久久久久青草| 久久久久久久久久看片| 欧美婷婷久久| 国产鲁鲁视频在线观看免费| 国产日韩欧美在线一区| 色之综合天天综合色天天棕色| 黄色免费在线播放| 国产欧美精品一区二区色综合| 日本不卡高清视频一区| 超碰国产在线观看| 国产精品乱码久久久久久| 中文字幕久久一区| 午夜影院免费在线| 亚洲国产毛片aaaaa无费看| www.av91| 樱花草涩涩www在线播放| 欧美色播在线播放| 亚洲狼人综合干| 日韩在线激情| 日韩欧美激情一区| 怡红院一区二区| 在线日本制服中文欧美| 最近2019中文字幕mv免费看 | 亚洲香蕉成人av网站在线观看| av网站免费在线播放| 精品国产乱码久久久久久蜜坠欲下| 一区二区三区精品99久久| 国产激情av在线| 国产在线成人| 热久久视久久精品18亚洲精品| 中文字幕乱码一区二区| 国产精品资源网站| 久久精品国产综合精品 | 中文字幕av一区中文字幕天堂 | 国产精品福利在线| 国产精品久久久久久69| 粉嫩av一区二区三区在线播放| 精品无人区一区二区三区竹菊| 蜜桃视频在线入口www| ...av二区三区久久精品| 缅甸午夜性猛交xxxx| 欧美精品高清| 欧美videos中文字幕| 欧美日韩高清丝袜| 欧美在线资源| 国产成人一区二| aaa级黄色片| 久久综合久久综合九色| 视色,视色影院,视色影库,视色网| 蜜臀久久精品| 日韩午夜在线观看视频| 午夜精产品一区二区在线观看的| 欧美精品97| 国产欧美日韩中文字幕| 无码国产精品一区二区免费16| 国产精品卡一卡二卡三| 日韩av综合在线观看| 麻豆久久久久| 精品99一区二区| 中文字幕第69页| 国产欧美成人| caoporen国产精品| av在线播放av| 色综合视频一区二区三区高清| 国产不卡的av| 国产一区二区三区站长工具| 久久久视频免费观看| 一区二区日韩在线观看| 久久精品一二三| 国产精品久久久久9999爆乳| 91精品网站在线观看| 亚洲午夜国产成人av电影男同| 精品在线视频免费观看| 狠狠色伊人亚洲综合成人| 日韩电影在线播放| 中文在线а√在线8| 亚洲国产精品电影在线观看| 2018天天弄| 国产综合久久久久久久久久久久| 欧美第一黄网| 欧美aaaaa性bbbbb小妇| 亚洲精品在线三区| 久久久久无码国产精品不卡| 精品午夜久久福利影院| 亚洲欧美日韩精品在线| 台湾佬成人网| 日韩的一区二区| 久草手机在线观看| www.日韩精品| 欧美在线观看www| 欧美大胆视频| 欧美中文在线观看| 免费在线稳定资源站| 欧美午夜精品在线| 超碰97人人干| 久久这里只有| 婷婷久久伊人| 亚洲高清国产拍精品26u| 色偷偷av一区二区三区乱| 国产一级精品毛片| 中文字幕在线不卡一区二区三区| 一区二区三区 欧美| 欧美第一精品| 91色p视频在线| 日本色护士高潮视频在线观看| 日韩欧美高清在线| 日本少妇毛茸茸高潮| 91网站最新网址| www.国产区| 日韩欧美大片| 亚洲最大福利网| а√天堂8资源中文在线| 亚洲精品久久久久中文字幕欢迎你| 日韩av男人天堂| 久久精品人人做人人爽人人| 免费看国产黄色片| 亚欧美无遮挡hd高清在线视频 | 中文字幕精品一区| 一二三级黄色片| 国内自拍一区| 日韩福利一区二区三区| 欧美成人福利| 久久久久久久999| 免费毛片在线| 欧美一卡二卡在线| 毛片毛片女人毛片毛片| 久久精品视频免费| 搡的我好爽在线观看免费视频| 一区在线视频观看| 视频在线一区二区三区| 日韩精品三级| 国产成人avxxxxx在线看| 在线毛片网站| 亚洲国产精品久久久| 亚洲午夜在线播放| 亚洲在线免费播放| 懂色av蜜桃av| 成人高清视频在线| 日本久久久久久久久久久久| 欧美.日韩.国产.一区.二区| 久久综合九色综合久99| 4438五月综合| 日本午夜精品理论片a级appf发布| 日本综合在线| 日韩精品免费视频| 国产女同91疯狂高潮互磨| 色综合一个色综合亚洲| 国产盗摄x88av| 欧美极品aⅴ影院| 污污免费在线观看| 久久er99精品| 国产a级一级片| 欧美韩国一区| 亚洲在线色站| 亚洲色图丝袜| 国产精品一区二区三区不卡| 国产一区二区三区四区五区3d| 午夜精品久久17c| 免费黄色网页在线观看| 日韩毛片在线观看| 超碰在线播放97| 欧美日韩精品系列| 色老头一区二区| 午夜久久久影院| 麻豆changesxxx国产| 中文字幕一区二区视频| 国产精品毛片一区二区| 成人午夜激情片| 亚洲综合伊人久久| 久久国产日韩欧美精品| 九九视频精品在线观看| 久久精品日产第一区二区| 亚洲色成人www永久在线观看| 99国产精品一区二区| 天天人人精品| 国产一区二区三区四区五区传媒| 精品国产一区二区三区麻豆免费观看完整版 | 日本国产一区二区三区| 波多野结衣在线观看| 欧美片一区二区三区| 国产在线一区二区视频| 色香阁99久久精品久久久| 国产一级网站视频在线| 日韩乱码在线视频| 人成在线免费视频| 日韩高清免费观看| 欧美一区,二区| 精品国产精品一区二区夜夜嗨| 国内精品久久久久久久久久久| 这里是久久伊人| 国产人妖一区二区| 欧美一区二区三区免费| 99精品在线视频观看| 日韩欧美自拍偷拍| 精品少妇一区| 国产精品欧美久久久久一区二区 | 亚洲aaa视频| 国产欧美日韩卡一| 1024手机在线观看你懂的| 欧美国产一区在线| 香蕉成人在线视频| 国产精品免费丝袜| 久久国产波多野结衣| 最近日韩中文字幕| 欧美日韩精品在线观看视频 | 99精品在线观看视频| 91精品小视频| 久久色.com| 91精品国自产在线| 亚洲乱码国产乱码精品精的特点 | 成人国产精品久久久久久亚洲| 香蕉久久一区| 国产精品免费一区二区三区在线观看 | 无码人妻久久一区二区三区蜜桃 | 极品蜜桃臀肥臀-x88av| 成人免费在线观看入口| 久久久久噜噜噜亚洲熟女综合| 亚洲午夜久久久久| 久久青青草原亚洲av无码麻豆 | 国产精品剧情在线亚洲| 中文字幕av久久爽av| 无吗不卡中文字幕| 国产男人搡女人免费视频| 欧美夫妻性生活| 超碰在线播放97| 亚洲色图美腿丝袜| 国产cdts系列另类在线观看| 色综合久久久888| 亚洲国产欧美日本视频| 国产精品丝袜高跟| 成人涩涩网站| 日韩欧美在线观看强乱免费| 在线观看国产精品入口| 少妇性饥渴无码a区免费| 久久精品二区亚洲w码| av av在线| 中文欧美字幕免费| 日本一级一片免费视频| 欧美日韩午夜在线视频| 亚洲精品无码专区| 中文字幕欧美国内| yellow字幕网在线| 91久久在线播放| 在线日本制服中文欧美| 精品无码av无码免费专区| 久久一二三区| 天天躁日日躁狠狠躁av| 国产精品少妇自拍| 国产小视频在线免费观看| 欧美精品久久久久久久久老牛影院| 少妇av在线播放| 久久精品国产精品亚洲| 欧美xxxxxx| 国产精品传媒毛片三区| 日韩片欧美片| 欧美 日韩精品| 成人中文字幕合集| 成人自拍小视频| 在线免费精品视频| 无码精品人妻一区二区三区影院| 久久av.com| 欧美亚洲黄色| 欧洲成人一区二区| 亚洲免费精品| 色哟哟网站在线观看| 中文字幕在线视频一区| 成人a v视频| 亚洲精品网站在线播放gif| 99久久精品免费看国产小宝寻花 | 成人黄色片视频| 国产999精品久久久久久绿帽| 老司机福利在线观看| 欧美性高潮床叫视频| 欧美一级淫片aaaaaa| 欧美成人免费va影院高清| 日本a人精品| 亚洲欧洲一二三| 日本va欧美va精品发布| 亚洲午夜久久久久久久久红桃| 亚洲成人激情av| 亚洲卡一卡二卡三| 欧美大片免费看| 亚洲一区二区电影| 成人黄色大片网站| 国产99久久久国产精品潘金网站| 99鲁鲁精品一区二区三区| 欧美三级资源在线| 91ph在线| 成人激情春色网| 亚欧美无遮挡hd高清在线视频| 在线观看免费不卡av| 国产精品久久久久一区二区三区共| 亚洲天堂视频在线播放| 亚洲一区二区福利| 成人黄色视屏网站| 亚洲欧美成人一区| 另类成人小视频在线| 日韩在线观看免| 3d成人动漫网站| 尤物在线网址| 国产伦精品一区二区三区免费视频| 极品日韩av| 国产色视频一区二区三区qq号| 色综合久久综合| 99视频在线观看地址| 91人人爽人人爽人人精88v| 欧美日本一区| 你懂得在线视频| 日本精品视频一区二区三区| 91伦理视频在线观看| 亚洲精品欧美一区二区三区| 激情另类综合| 亚洲综合色一区| 欧美精三区欧美精三区| 调教一区二区| 久久久综合香蕉尹人综合网| 日韩精品亚洲一区二区三区免费| 亚欧精品视频一区二区三区| 欧美一卡二卡三卡四卡| 888av在线视频| 日韩国产一区久久| 国产在线播放一区三区四| 日韩成人免费在线视频| 中文字幕亚洲欧美日韩高清| 久久久久亚洲精品中文字幕| 男女啪啪免费视频网站| 中文字幕欧美激情| 亚洲男女视频在线观看| 国产91久久婷婷一区二区| 91成人观看| 性欧美成人播放77777| 欧美日韩国产美女| 9765激情中文在线| 在线观看亚洲视频啊啊啊啊| 北岛玲一区二区三区四区| 中文字幕日韩经典| 欧美激情一级二级| 波多野结衣一区| 一区二区免费在线观看视频| 欧美精品免费视频| 中国字幕a在线看韩国电影| 一级性生活视频|