娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年01月28日(星期二)

2021年01月28日 | ANSIC幾種特殊的標(biāo)準(zhǔn)定義(__FILE__、__LINE__、__STDC__···)

發(fā)布者:真誠(chéng)的友誼 來(lái)源: eefocus關(guān)鍵字:ANSIC  標(biāo)準(zhǔn)定義  stm32 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

Ⅰ寫在前面

為方便大家閱讀,本文內(nèi)容已經(jīng)整理成PDF文件:

http://pan.baidu.com/s/1gfHygyn


對(duì)于我們大部分使用單片機(jī)進(jìn)行裸機(jī)開發(fā)的朋友來(lái)說(shuō),可能很少有人在程序中許多關(guān)鍵的地方打印一些關(guān)鍵信息。

有較大系統(tǒng)開發(fā),或復(fù)雜系統(tǒng)開發(fā)經(jīng)驗(yàn)的朋友一般都會(huì)在程序中輸出很多調(diào)試信息,如在UCOS、freeRTOS、Linux等系統(tǒng)開發(fā)調(diào)試時(shí)打印許多關(guān)鍵信息。


1.我們?cè)谑褂肧TM32庫(kù)開發(fā)時(shí),在stm32fxxx_conf.h文件下會(huì)發(fā)現(xiàn)如下這么一條語(yǔ)句:

#define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))


這條語(yǔ)句,對(duì)于使用寄存器,開發(fā)簡(jiǎn)單且不大程序的朋友而言,可能他覺(jué)得用處不大,它可能就覺(jué)得很占資源,且耗時(shí)。


其實(shí)不然,ST這么設(shè)計(jì)是有他一定的道理的,對(duì)于開發(fā)大型、復(fù)雜系統(tǒng)的朋友而言,這條語(yǔ)句其實(shí)用處很大。每次,程序運(yùn)行錯(cuò)誤之后,它會(huì)打印程序代碼指定的位置,方便我們?cè)邶嫶蟮某绦蛑泻芸煺业藉e(cuò)誤的位置。


2.我們的系統(tǒng)會(huì)隨著時(shí)間的推移,不斷升級(jí)更新,也就是需要提交很多版本的可執(zhí)行文件(hex、bin等)。但是,產(chǎn)品后期使用中,我們對(duì)某些設(shè)備進(jìn)行了升級(jí),可能忽略了一些設(shè)備,也就是有些設(shè)備沒(méi)有升級(jí),如果出現(xiàn)故障,我們?cè)鯓硬拍芎芸煺业绞悄囊粋€(gè)版本的軟件出現(xiàn)故障呢?


這里就需要我們?cè)诔绦蛑刑砑右恍╆P(guān)于版本的信息,我們最基礎(chǔ)的就是Vx.x.x.x等這種信息,但對(duì)于大型系統(tǒng)而言,這種信息是不夠的,還需要更多,比如:編譯日期,時(shí)間,編譯環(huán)境的版本等。


Ⅱ幾種特殊標(biāo)準(zhǔn)定義

上面說(shuō)了這么多,就是需要讓大家知道,這些特殊標(biāo)準(zhǔn)定義的用途。上面說(shuō)的只是簡(jiǎn)單的舉例,其實(shí)他們的用途還很廣泛,掌握了基礎(chǔ)之后相信你們都會(huì)知道它們更多比較實(shí)用的意義。言歸正傳,下面講述這些基礎(chǔ)的知識(shí)。


本文主要講述下面幾個(gè)標(biāo)準(zhǔn)定義:

__LINE__ :正在編譯文件的行號(hào)

__FILE__ :正在編譯文件的文件名

__DATE__:編譯時(shí)刻的日期字符串 如“Jun 17 2017”

__TIME__:編譯時(shí)刻的時(shí)間字符串  如”10:00:00“

__STDC__:判斷該文件是不是標(biāo)準(zhǔn)C程序


1.__FILE__編譯文件名稱

    File中文意思即文件,這里的意思主要是指:正在編譯文件對(duì)應(yīng)正在編譯文件的路徑和文件的名稱。


Keil版本對(duì)應(yīng)的路徑是相對(duì)于工程文件而言的路徑,IAR版本路徑是相對(duì)Windows路徑。


比如下面提供源代碼工程:

char BuildFile[] = __FILE__;

printf("編譯文件路徑:%sn", BuildFile);


Keil:

編譯文件路徑:Appmain.c


IAR:

編譯文件路徑:C:UsersAdministratorDesktopSTM32F417ZG(IAR)_ANSIC幾種特殊的標(biāo)準(zhǔn)定義Appmain.c


2.__LINE__編譯文件行號(hào)

上面說(shuō)的是編譯的文件名,是一個(gè)字符串,而這里說(shuō)的是行號(hào),是一個(gè)整型變量,這是這兩者的區(qū)別,所以在我提供工程中可以看到的源代碼:

char BuildLine = __LINE__;

printf("編譯代碼所在行:%dn", BuildLine);


可以看不是數(shù)組的字符串,打印信息:

編譯代碼所在行:44


一般情況下,__FILE__是和__LINE__結(jié)合一起使用,用于打印我們代碼信息,方便快速定位代碼位置。


3.__DATE__編譯日期

__DATE__日期,需要注意的是:這個(gè)日期是你在編譯時(shí)Windows系統(tǒng)的日期,如果對(duì)應(yīng)那部分代碼之前編譯好了,后面沒(méi)有編譯,這個(gè)日期還是之前的日期,而不是后面編譯的日期。因此,如果這里用于定版本,就需要在定版本時(shí)對(duì)工程進(jìn)行全部重新編譯,它才會(huì)更新至你最后編譯的日期。


代碼:

char BuildDate[] = __DATE__;

printf("編譯日期:%sn", BuildDate);


輸出結(jié)果:

編譯日期:Jun 17 2017


4.__TIME__編譯時(shí)間

這個(gè)和__DATE__一樣的原理,編譯時(shí)的時(shí)間,也是一個(gè)字符串。

再次提醒:用于定版本:需要重新編譯,這樣才是最后一次編譯時(shí)間。


代碼:

char BuildTime[] = __TIME__;

printf("編譯時(shí)間:%sn", BuildTime);


輸出結(jié)果

編譯時(shí)間:11:30:15


5.__STDC__標(biāo)準(zhǔn)C代碼

這個(gè)標(biāo)準(zhǔn)在我們單片機(jī)及嵌入式編程中運(yùn)用的比較少,當(dāng)要求程序嚴(yán)格遵循ANSIC標(biāo)準(zhǔn)時(shí)該標(biāo)識(shí)符被賦值為1,主要是判斷我們的程序文件是不是標(biāo)準(zhǔn)C程序。


#ifdef __STDC__

  printf("標(biāo)準(zhǔn)C代碼文件n");

#else

  printf("非標(biāo)準(zhǔn)C代碼文件n");

#endif


Ⅲ源代碼分析與下載

為了方便大家學(xué)習(xí),本文提供的源代碼比較基礎(chǔ)和簡(jiǎn)單,也方便理論結(jié)合實(shí)際學(xué)習(xí),僅供參考。


我們?cè)谥靶陆ê玫腄emo工程上添加了如下部分代碼:

char BuildLine = __LINE__;

char BuildFile[] = __FILE__;

char BuildDate[] = __DATE__;

char BuildTime[] = __TIME__;


printf("編譯文件路徑:%sn", BuildFile);

printf("編譯代碼所在行:%dn", BuildLine);


printf("編譯日期:%sn", BuildDate);

printf("編譯時(shí)間:%sn", BuildTime);


#ifdef __STDC__

  printf("標(biāo)準(zhǔn)C代碼文件n");

#else

  printf("非標(biāo)準(zhǔn)C代碼文件n");

#endif


Keil版本輸出結(jié)果:

編譯文件路徑:Appmain.c

編譯代碼所在行:44

編譯日期:Jun 17 2017

編譯時(shí)間:11:30:15

標(biāo)準(zhǔn)C代碼文件


IAR版本輸出結(jié)果:

編譯文件路徑:C:UsersAdministratorDesktopSTM32F417ZG(IAR)_ANSIC幾種特殊的標(biāo)準(zhǔn)定義Appmain.c

編譯代碼所在行:44

編譯日期:Jun 17 2017

編譯時(shí)間:11:45:00

標(biāo)準(zhǔn)C代碼文件


源代碼工程(STM32F417ZG_ANSIC幾種特殊的標(biāo)準(zhǔn)定義)下載地址:

http://pan.baidu.com/s/1hskScba


關(guān)鍵字:ANSIC  標(biāo)準(zhǔn)定義  stm32 引用地址:ANSIC幾種特殊的標(biāo)準(zhǔn)定義(__FILE__、__LINE__、__STDC__···)

上一篇:可變參數(shù)宏__VA_ARGS__的用法
下一篇:一篇很簡(jiǎn)單,有必要了解的文章 - STM32復(fù)位來(lái)源(寄存器版)

推薦閱讀

在今天舉行的“高通中國(guó)技術(shù)與合作峰會(huì)”上,聞泰科技股份有限公司董事長(zhǎng)張學(xué)政表示,海外市場(chǎng)目前空間巨大,可以幫助中國(guó)手機(jī)廠商未來(lái)5年繼續(xù)保持增長(zhǎng)勢(shì)頭。作為中國(guó)手機(jī)行業(yè)的無(wú)名英雄,聞泰科技為眾多手機(jī)企業(yè)提供方案和設(shè)計(jì)。張學(xué)政表示,聞泰有豐富的海外客戶合作經(jīng)驗(yàn),幾乎與全球所有運(yùn)營(yíng)商都有合作關(guān)系,非常清楚全球各個(gè)國(guó)家和地區(qū)的入網(wǎng)門檻和差...
美國(guó)專利商標(biāo)局(USPTO)已授予LG電子設(shè)計(jì)一個(gè)“家用機(jī)器人”的專利,外觀上像是我們小時(shí)候玩過(guò)的不倒翁,它的前面還有一個(gè)小小的屏幕來(lái)顯示信息。作為一個(gè)現(xiàn)代家庭的智能機(jī)器人,LG還沒(méi)有公開關(guān)于該設(shè)備具體技術(shù)信息,但是,已經(jīng)發(fā)布的圖像可以讓我們一窺機(jī)器人的外觀。在身體形狀方面,機(jī)器人看起來(lái)像一個(gè)俄羅斯套娃。在設(shè)備的頂部是一個(gè)顯示器,作為交...
本文使用的芯片是是stm8s103f3。以下主要說(shuō)明配置TIM2通道1為PWM輸出的過(guò)程。1.寄存器配置4位預(yù)分頻器,計(jì)數(shù)器的計(jì)數(shù)頻率Fck_cnt=Fck_psc/2^(PSC[3:0])=16M/2^0=16M那么計(jì)數(shù)周期為1/16us,也就是說(shuō)計(jì)數(shù)器會(huì)每隔1/16us計(jì)數(shù)一次。TIM2_PSCR=0x00; //分頻值=0 16M自動(dòng)重裝載寄存器,當(dāng)自動(dòng)重裝載寄存器=0時(shí),計(jì)數(shù)器處于阻塞狀態(tài),也就是不計(jì)數(shù)狀態(tài),因?yàn)楫?dāng)C...
定時(shí)器_A 是具有 3 個(gè)捕捉/比較寄存器的 16 位定時(shí)器/計(jì)數(shù)器。 定時(shí)器_A 能支持多個(gè)捕捉/比較,PWM 輸 出,和反相時(shí)序。 定時(shí)器_A 還有廣泛的中斷功能。 中斷可由計(jì)數(shù)器在溢出條件上產(chǎn)生也可以由每一個(gè)捕 捉/比較寄存器產(chǎn)生。定時(shí)器_A 功能包括:? 在四種運(yùn)行模式下異步 16 位定時(shí)器/計(jì)數(shù)器? 可選擇和可配置的時(shí)鐘源? 兩個(gè)或三個(gè)可...

史海拾趣

問(wèn)答坊 | AI 解惑

工控版引言

各位電子工程世界的朋友: 非常歡迎你們來(lái)到電子工程世界論壇工控版,做這個(gè)版的版主已經(jīng)一段時(shí)間,一直沒(méi)有好好和各位交流,很抱歉。今天在這里說(shuō)一些事情。 看到很多工控的朋友很希望得到一些plc的電子書,可能由于網(wǎng)絡(luò)的問(wèn)題,導(dǎo)致稍 ...…

查看全部問(wèn)答∨

大家討論一下:市場(chǎng)上單片機(jī)各自的優(yōu)缺點(diǎn)是什么?

我先拋磚引玉,簡(jiǎn)單談?wù)劇? 首先,MCS-51系列是大家再熟悉不過(guò)的,優(yōu)點(diǎn):有群眾基礎(chǔ),易上手,片源廣。缺點(diǎn):適合民用,商用,不適合工業(yè)用途。目前,提供51的廠家有:ATMEL,PHILIPS,WINBOND等等。 PIC單片機(jī)是MICROCHIP 公司的產(chǎn)品,其突出的 ...…

查看全部問(wèn)答∨

VB中MSCOMM控件實(shí)現(xiàn)串行通信的問(wèn)題

PC機(jī)與單片機(jī)串行通信。我遇到的問(wèn)題:發(fā)數(shù)據(jù)少于8個(gè),能正確接收,漢字少于4個(gè),能正確接收;若發(fā)多了,只能收到8個(gè)數(shù),漢字只能收4到個(gè),而且接收區(qū)不能連續(xù)顯示。用串口調(diào)試工具驗(yàn)證單片機(jī)中程序沒(méi)錯(cuò),我用的是VB企業(yè)版中的MSCOMM控件,程序代碼 ...…

查看全部問(wèn)答∨

說(shuō)說(shuō)鋰電池保護(hù)電路綜述

鋰離子電池保護(hù)電路包括過(guò)度充電保護(hù)、過(guò)電流/短路保護(hù)和過(guò)放電保護(hù),要求過(guò)充電保護(hù)高精密度、保護(hù)IC功耗低、高耐壓以及零伏可充電等特性。本文詳細(xì)介紹了這三種保護(hù)電路的原理、新功能和特性要求。近年來(lái),PDA、數(shù)字相機(jī)、手機(jī)、可攜式音訊 ...…

查看全部問(wèn)答∨

S7-200背景時(shí)間設(shè)定

雙擊SYSTERM BLOCK,選中Background Time項(xiàng)。可以設(shè)定掃描循環(huán)時(shí)間的百分比,這段時(shí)間是用來(lái)處理通訊請(qǐng)求的,該通訊請(qǐng)求是由運(yùn)行模式編譯或STL狀態(tài)監(jiān)控所產(chǎn)生的。當(dāng)您增加了用于處理通訊請(qǐng)求時(shí)間的百分比后,您同是也增加了掃描時(shí)間,這將會(huì)使的控制 ...…

查看全部問(wèn)答∨

求教解決大容量數(shù)據(jù)儲(chǔ)存及快速讀取技術(shù)

急需解決大容量數(shù)據(jù)儲(chǔ)存及快速讀取技術(shù)      最近需要解決大容量數(shù)據(jù)存儲(chǔ)及快速讀取技術(shù)。大約需要將上百Gbit的數(shù)據(jù)存入大容量存儲(chǔ)器,并需要在設(shè)備工作時(shí)能高速讀取數(shù)據(jù),并要求該存儲(chǔ)器能具有高可靠性。   &nb ...…

查看全部問(wèn)答∨

收到MSP-EXP430FR5739實(shí)驗(yàn)板套件的壇友們舉個(gè)手

MSP-EXP430FR5739實(shí)驗(yàn)板套件的團(tuán)購(gòu)現(xiàn)在結(jié)束了,有多少壇友們收到了開發(fā)板,快來(lái)報(bào)個(gè)到,咱們也來(lái)討論討論怎么利用這塊帶FRAM的開發(fā)板。 [ 本帖最后由 wstt 于 2011-11-29 13:02 編輯 ]…

查看全部問(wèn)答∨

信號(hào)完整性問(wèn)題和印制電路板設(shè)計(jì)

不錯(cuò)的一本信號(hào)完整性的書,是譯本…

查看全部問(wèn)答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 海口市| 泽州县| 慈溪市| 武鸣县| 射阳县| 浑源县| 商洛市| 江都市| 荆州市| 都兰县| 长宁县| 宣武区| 马鞍山市| 太湖县| 泸水县| 巴彦淖尔市| 临漳县| 长沙市| 镇原县| 怀仁县| 辽宁省| 安庆市| 仁寿县| 宕昌县| 外汇| 土默特左旗| 离岛区| 黄骅市| 额济纳旗| 宣武区| 紫阳县| 比如县| 仁布县| 凤台县| 伊金霍洛旗| 简阳市| 马尔康县| 奎屯市| 玉树县| 蒙自县| 永靖县|