c語(yǔ)言標(biāo)準(zhǔn)庫(kù)函數(shù) C標(biāo)準(zhǔn)庫(kù)的頭文件到底有多少個(gè)?
C標(biāo)準(zhǔn)庫(kù)的頭文件到底有多少個(gè)?不同的編譯器有不同數(shù)量的頭文件。我們只需要記住幾個(gè)常見(jiàn)的頭名稱。常用:stdio。標(biāo)準(zhǔn)輸出和輸入;標(biāo)準(zhǔn)lib。公共庫(kù);字符串。字符串函數(shù);數(shù)學(xué)。H數(shù)學(xué)庫(kù)(當(dāng)你使用三角函數(shù)
C標(biāo)準(zhǔn)庫(kù)的頭文件到底有多少個(gè)?
不同的編譯器有不同數(shù)量的頭文件。
我們只需要記住幾個(gè)常見(jiàn)的頭名稱。常用:stdio。標(biāo)準(zhǔn)輸出和輸入;標(biāo)準(zhǔn)lib。公共庫(kù);字符串。字符串函數(shù);數(shù)學(xué)。H數(shù)學(xué)庫(kù)(當(dāng)你使用三角函數(shù),平方根等)時(shí)間。H時(shí)間庫(kù)(與時(shí)間相關(guān))窗口。H Microsoft Windows(與Windows系統(tǒng)相關(guān))。有了這些,大多數(shù)程序都沒(méi)有問(wèn)題。
c的標(biāo)準(zhǔn)庫(kù)和運(yùn)行時(shí)庫(kù)有什么區(qū)別?
C標(biāo)準(zhǔn)庫(kù)包括常用的數(shù)學(xué)函數(shù)、字符串運(yùn)算函數(shù)等。這些函數(shù)由編程專家編寫(xiě),效率高,錯(cuò)誤少,完全符合C語(yǔ)言標(biāo)準(zhǔn)函數(shù)。C運(yùn)行時(shí)可以說(shuō)是C標(biāo)準(zhǔn)庫(kù)的擴(kuò)展。它完全包含了C標(biāo)準(zhǔn)庫(kù),但還添加了一些附加函數(shù)。例如,C標(biāo)準(zhǔn)庫(kù)的strcpy函數(shù)負(fù)責(zé)字符串的復(fù)制,但由于對(duì)目標(biāo)字符串緩沖區(qū)的大小缺乏控制,很可能導(dǎo)致緩沖區(qū)溢出(大量緩沖區(qū)溢出攻擊都是由該漏洞引起的);相反,windows提供了一個(gè)安全的字符串復(fù)制函數(shù),可以實(shí)現(xiàn)相同的功能,減少緩沖區(qū)攻擊的可能性Yes,strcpyus。這些函數(shù)以C運(yùn)行時(shí)庫(kù)的形式提供。當(dāng)然,不同的操作系統(tǒng)可能有不同的C運(yùn)行時(shí)庫(kù),但是對(duì)C標(biāo)準(zhǔn)庫(kù)的支持是完全一致的。也就是說(shuō),在不同的操作系統(tǒng)上,使用同一個(gè)C標(biāo)準(zhǔn)庫(kù)的函數(shù)必然會(huì)產(chǎn)生相同的結(jié)果。
stm32是用hal庫(kù),還是標(biāo)準(zhǔn)庫(kù)?懂行的介紹一下?
St之前介紹了標(biāo)準(zhǔn)庫(kù)函數(shù),包括寄存器版本和庫(kù)函數(shù)版本。注冊(cè)版本使用起來(lái)很麻煩。您需要檢查每個(gè)設(shè)置的芯片數(shù)據(jù)表。優(yōu)點(diǎn)是您可以熟悉芯片的寄存器配置。庫(kù)函數(shù)是基于寄存器版本的二次包
介紹,它的優(yōu)點(diǎn)是寄存器版本的缺點(diǎn),使用方便,不再需要手動(dòng)配置寄存器,使用更方便。但它的缺點(diǎn)是Hal的優(yōu)點(diǎn),即每次修改MCU函數(shù)時(shí),都需要手工修改函數(shù),而且自修改不能保證正確性,不同MCU之間的程序代碼移植性不強(qiáng)。
Hal library,Hal是hardware abstraction layer的縮寫(xiě),中文名為:hardware abstraction layer,Hal library項(xiàng)目一般使用cube軟件生成項(xiàng)目。Hal庫(kù)是ST公司針對(duì)STM32單片機(jī)開(kāi)發(fā)的最新抽象層嵌入式軟件,更便于實(shí)現(xiàn)STM32產(chǎn)品的最大可移植性。其優(yōu)點(diǎn)是開(kāi)發(fā)工程師不需要關(guān)注MCU模型,只需要專注于功能軟件的開(kāi)發(fā)工作。它是未來(lái)的主要發(fā)展方向,并在不斷更新。建議您在正常使用時(shí),它會(huì)自動(dòng)更新或關(guān)閉。否則,將在更新前調(diào)試的代碼將無(wú)法正常工作。設(shè)置多維數(shù)據(jù)集軟件的方法點(diǎn)幫助,然后選擇手動(dòng)更新。詳見(jiàn)圖。
根據(jù)我們的工程師和我的研發(fā)經(jīng)驗(yàn),我們一開(kāi)始使用標(biāo)準(zhǔn)庫(kù)函數(shù)。后來(lái)我們發(fā)現(xiàn),St推出Hal庫(kù)后,我們逐漸轉(zhuǎn)向Hal庫(kù)的開(kāi)發(fā)。它的優(yōu)勢(shì)在于軟件代碼在不同芯片之間具有很強(qiáng)的可移植性,并且cube軟件生成的項(xiàng)目指定了自己代碼的位置。如果不按規(guī)定編寫(xiě),cube再次生成項(xiàng)目時(shí)會(huì)覆蓋自己的代碼,進(jìn)一步增強(qiáng)了代碼的可移植性。
另外,如果需要修改MCU的功能,如添加新的GPIO或串口,在使用標(biāo)準(zhǔn)庫(kù)函數(shù)時(shí),需要復(fù)制其他串口的初始化代碼,然后手動(dòng)修改。使用Hal庫(kù)時(shí),您不需要這樣做。您只需將設(shè)置添加到多維數(shù)據(jù)集并生成它們。
多維數(shù)據(jù)集會(huì)自動(dòng)為您生成初始化代碼。
綜上所述,建議新手直接使用Hal庫(kù),使用起來(lái)更方便,開(kāi)發(fā)所需的軟件功能也更快。復(fù)雜的寄存器配置工作可以交給cube軟件,這也符合未來(lái)發(fā)展的主流思路。