菊廠C語(yǔ)言編碼規(guī)范

嵌入式電子 2023-09-26 07:48

作為程序開(kāi)發(fā)者,避免不了閱讀別人代碼,那么就會(huì)涉及到到一門(mén)語(yǔ)言的編程規(guī)范。規(guī)范雖然不是語(yǔ)言本身的硬性要求,但是已經(jīng)是每一個(gè)語(yǔ)言使用者約定俗成的一個(gè)規(guī)范。

按照編程規(guī)范編寫(xiě)的代碼,至少在代碼閱讀時(shí),給人一種愉悅的心情,特別是強(qiáng)迫癥患者。另一方面,統(tǒng)一的編程風(fēng)格,可以減少編寫(xiě)錯(cuò)誤,利于后期維護(hù)。

因?yàn)樽罱珠_(kāi)始進(jìn)行純C語(yǔ)言的開(kāi)發(fā),并且是基于SDK的開(kāi)發(fā),所以添加的每一行代碼都應(yīng)該與原來(lái)風(fēng)格保持一致,不能因?yàn)橐活w老鼠屎壞了一鍋湯。一個(gè)良好的編程規(guī)范也可以看出編程人員的細(xì)心程度與代碼質(zhì)量。

之前待過(guò)的兩家公司,也都有各自總結(jié)的編程規(guī)范,但都不約而同的一致,適用本公司的軟件開(kāi)發(fā)。這幾天有幸可以參閱華為技術(shù)有限公司的C語(yǔ)言編程規(guī)范,相比之下,寫(xiě)的更加詳細(xì)。

至少接觸到了,在這個(gè)編程規(guī)范中體現(xiàn)了,并且還擴(kuò)充了很多,我覺(jué)得有必要?dú)w納總結(jié),一遍日后查閱。先是學(xué)習(xí)規(guī)范,然后再積累規(guī)范,最后才是依規(guī)范編寫(xiě)。

1、清晰第一

清晰性是易于維護(hù)、易于重構(gòu)的程序必需具備的特征。代碼首先是給人讀的,好的代碼應(yīng)當(dāng)可以像文章一樣發(fā)聲朗誦出來(lái)。

2.、簡(jiǎn)潔為美

簡(jiǎn)潔就是易于理解并且易于實(shí)現(xiàn)。代碼越長(zhǎng)越難以看懂,也就越容易在修改時(shí)引入錯(cuò)誤。寫(xiě)的代碼越多,意味著出錯(cuò)的地方越多,也就意味著代碼的可靠性越低。因此,我們提倡大家通過(guò)編寫(xiě)簡(jiǎn)潔明了的代碼來(lái)提升代碼可靠性。廢棄的代碼(沒(méi)有被調(diào)用的函數(shù)和全局變量)要及時(shí)清除,重復(fù)代碼應(yīng)該盡可能提煉成函數(shù)。

3、選擇合適的風(fēng)格,與代碼原有的風(fēng)格保持一致

產(chǎn)品所有人共同分享同一種風(fēng)格所帶來(lái)的好處,遠(yuǎn)遠(yuǎn)超出為了統(tǒng)一而付出的代價(jià)。在公司已有編碼規(guī)范的指導(dǎo)下,審慎地編排代碼以使代碼盡可能清晰,是一項(xiàng)非常重要的技能。如果重構(gòu)/修改其他風(fēng)格的代碼時(shí),比較明智的做法是根據(jù)現(xiàn)有代碼的現(xiàn)有風(fēng)格繼續(xù)編寫(xiě)代碼,或者使用格式轉(zhuǎn)換工具進(jìn)行轉(zhuǎn)換成公司內(nèi)部風(fēng)格。

一、頭文件

原則1.1 頭文件中適合放置接口的聲明,不適合放置實(shí)現(xiàn)。

說(shuō)明:頭文件是模塊(Module)或單元(Unit)的對(duì)外接口。頭文件中應(yīng)放置對(duì)外部的聲明,如對(duì)外提供的函數(shù)聲明、宏定義、類(lèi)型定義等。

原則1.2 頭文件應(yīng)當(dāng)職責(zé)單一。

說(shuō)明:頭文件過(guò)于復(fù)雜,依賴過(guò)于復(fù)雜是導(dǎo)致編譯時(shí)間過(guò)長(zhǎng)的主要原因。很多現(xiàn)有代碼中頭文件過(guò)大,職責(zé)過(guò)多,再加上循環(huán)依賴的問(wèn)題,可能導(dǎo)致為了在.c中使用一個(gè)宏,而包含十幾個(gè)頭文件。

原則1.3 頭文件應(yīng)向穩(wěn)定的方向包含。

說(shuō)明:頭文件的包含關(guān)系是一種依賴,一般來(lái)說(shuō),應(yīng)當(dāng)讓不穩(wěn)定的模塊依賴穩(wěn)定的模塊,從而當(dāng)不穩(wěn)定的模塊發(fā)生變化時(shí),不會(huì)影響(編譯)穩(wěn)定的模塊。

規(guī)則1.1 每一個(gè).c文件應(yīng)有一個(gè)同名.h文件,用于聲明需要對(duì)外公開(kāi)的接口。

說(shuō)明:如果一個(gè).c文件不需要對(duì)外公布任何接口,則其就不應(yīng)當(dāng)存在,除非它是程序的入口,如main函數(shù)所在的文件。

規(guī)則1.2 禁止頭文件循環(huán)依賴。

說(shuō)明:頭文件循環(huán)依賴,指a.h包含b.h,b.h包含c.h,c.h包含a.h之類(lèi)導(dǎo)致任何一個(gè)頭文件修改,都導(dǎo)致所有包含了a.h/b.h/c.h的代碼全部重新編譯一遍。

而如果是單向依賴,如a.h包含b.h,b.h包含c.h,而c.h不包含任何頭文件,則修改a.h不會(huì)導(dǎo)致包含了b.h/c.h的源代碼重新編譯。

規(guī)則1.3 .c/.h文件禁止包含用不到的頭文件。

說(shuō)明:很多系統(tǒng)中頭文件包含關(guān)系復(fù)雜,開(kāi)發(fā)人員為了省事起見(jiàn),可能不會(huì)去一一鉆研,直接包含一切想到的頭文件,甚至有些產(chǎn)品干脆發(fā)布了一個(gè)god.h,其中包含了所有頭文件,然后發(fā)布給各個(gè)項(xiàng)目組使用,這種只圖一時(shí)省事的做法,導(dǎo)致整個(gè)系統(tǒng)的編譯時(shí)間進(jìn)一步惡化,并對(duì)后來(lái)人的維護(hù)造成了巨大的麻煩。

規(guī)則1.4 頭文件應(yīng)當(dāng)自包含。

說(shuō)明:簡(jiǎn)單的說(shuō),自包含就是任意一個(gè)頭文件均可獨(dú)立編譯。如果一個(gè)文件包含某個(gè)頭文件,還要包含另外一個(gè)頭文件才能工作的話,就會(huì)增加交流障礙,給這個(gè)頭文件的用戶增添不必要的負(fù)擔(dān)。

規(guī)則1.5 總是編寫(xiě)內(nèi)部#include保護(hù)符(#define 保護(hù))。

說(shuō)明:多次包含一個(gè)頭文件可以通過(guò)認(rèn)真的設(shè)計(jì)來(lái)避免。如果不能做到這一點(diǎn),就需要采取阻止頭文件內(nèi)容被包含多于一次的機(jī)制。

注: 沒(méi)有在宏最前面加上 _ ,即使用 FILENAME_H代替 ?FILENAME_H?,是因?yàn)橐话阋?_ 和 ?__ 開(kāi)頭的標(biāo)識(shí)符為系統(tǒng)保留或者標(biāo)準(zhǔn)庫(kù)使用,在有些靜態(tài)檢查工具中,若全局可見(jiàn)的標(biāo)識(shí)符以 _ 開(kāi)頭會(huì)給出告警。

定義包含保護(hù)符時(shí),應(yīng)該遵守如下規(guī)則:

1)保護(hù)符使用唯一名稱;

2)不要在受保護(hù)部分的前后放置代碼或者注釋。

規(guī)則1.6 禁止在頭文件中定義變量。

說(shuō)明:在頭文件中定義變量,將會(huì)由于頭文件被其他.c文件包含而導(dǎo)致變量重復(fù)定義。

規(guī)則1.7 只能通過(guò)包含頭文件的方式使用其他.c提供的接口,禁止在.c中通過(guò)extern的方式使用外部函數(shù)接口、變量。

說(shuō)明:若a.c使用了b.c定義的foo()函數(shù),則應(yīng)當(dāng)在b.h中聲明extern int foo(int input);并在a.c中通過(guò)#include 來(lái)使用foo。禁止通過(guò)在a.c中直接寫(xiě)extern int foo(int input);來(lái)使用foo,后面這種寫(xiě)法容易在foo改變時(shí)可能導(dǎo)致聲明和定義不一致。這一點(diǎn)我們因?yàn)閳D方便經(jīng)常犯的。

規(guī)則1.8 禁止在extern "C"中包含頭文件。

說(shuō)明:在extern "C"中包含頭文件,會(huì)導(dǎo)致extern "C"嵌套,Visual Studio對(duì)extern "C"嵌套層次有限制,嵌套層次太多會(huì)編譯錯(cuò)誤。

建議1.1 一個(gè)模塊通常包含多個(gè).c文件,建議放在同一個(gè)目錄下,目錄名即為模塊名。為方便外部使用者,建議每一個(gè)模塊提供一個(gè).h,文件名為目錄名。

建議1.2 如果一個(gè)模塊包含多個(gè)子模塊,則建議每一個(gè)子模塊提供一個(gè)對(duì)外的.h,文件名為子模塊名。

建議1.3 頭文件不要使用非習(xí)慣用法的擴(kuò)展名,如.inc。

建議1.4 同一產(chǎn)品統(tǒng)一包含頭文件排列方式。

二、函數(shù)

原則2.1 一個(gè)函數(shù)僅完成一件功能。

說(shuō)明:一個(gè)函數(shù)實(shí)現(xiàn)多個(gè)功能給開(kāi)發(fā)、使用、維護(hù)都帶來(lái)很大的困難。

原則2.2 重復(fù)代碼應(yīng)該盡可能提煉成函數(shù)。

說(shuō)明:重復(fù)代碼提煉成函數(shù)可以帶來(lái)維護(hù)成本的降低。

規(guī)則2.1 避免函數(shù)過(guò)長(zhǎng),新增函數(shù)不超過(guò)50行(非空非注釋行)。

說(shuō)明:本規(guī)則僅對(duì)新增函數(shù)做要求,對(duì)已有函數(shù)修改時(shí),建議不增加代碼行。

規(guī)則2.2 避免函數(shù)的代碼塊嵌套過(guò)深,新增函數(shù)的代碼塊嵌套不超過(guò)4層。

說(shuō)明:本規(guī)則僅對(duì)新增函數(shù)做要求,對(duì)已有的代碼建議不增加嵌套層次。

規(guī)則2.3 可重入函數(shù)應(yīng)避免使用共享變量;若需要使用,則應(yīng)通過(guò)互斥手段(關(guān)中斷、信號(hào)量)對(duì)其加以保護(hù)。

規(guī)則2.4 對(duì)參數(shù)的合法性檢查,由調(diào)用者負(fù)責(zé)還是由接口函數(shù)負(fù)責(zé),應(yīng)在項(xiàng)目組/模塊內(nèi)應(yīng)統(tǒng)一規(guī)定。缺省由調(diào)用者負(fù)責(zé)。

規(guī)則2.5 對(duì)函數(shù)的錯(cuò)誤返回碼要全面處理。

規(guī)則2.6 設(shè)計(jì)高扇入,合理扇出(小于7)的函數(shù)。

說(shuō)明:扇出是指一個(gè)函數(shù)直接調(diào)用(控制)其它函數(shù)的數(shù)目,而扇入是指有多少上級(jí)函數(shù)調(diào)用它。如下圖:

img

規(guī)則2.7 廢棄代碼(沒(méi)有被調(diào)用的函數(shù)和變量)要及時(shí)清除。

建議2.1 函數(shù)不變參數(shù)使用const。

說(shuō)明:不變的值更易于理解/跟蹤和分析,把const作為默認(rèn)選項(xiàng),在編譯時(shí)會(huì)對(duì)其進(jìn)行檢查,使代碼更牢固/更安全。

建議2.2 函數(shù)應(yīng)避免使用全局變量、靜態(tài)局部變量和I/O操作,不可避免的地方應(yīng)集中使用。

建議2.3 檢查函數(shù)所有非參數(shù)輸入的有效性,如數(shù)據(jù)文件、公共變量等。

說(shuō)明:函數(shù)的輸入主要有兩種:一種是參數(shù)輸入;另一種是全局變量、數(shù)據(jù)文件的輸入,即非參數(shù)輸入。函數(shù)在使用輸入?yún)?shù)之前,應(yīng)進(jìn)行有效性檢查。

建議2.4 函數(shù)的參數(shù)個(gè)數(shù)不超過(guò)5個(gè)。

建議2.5 除打印類(lèi)函數(shù)外,不要使用可變長(zhǎng)參函數(shù)。

建議2.6 在源文件范圍內(nèi)聲明和定義的所有函數(shù),除非外部可見(jiàn),否則應(yīng)該增加static關(guān)鍵字。

三、 標(biāo)識(shí)符命名與定義

目前比較常用的如下幾種命名風(fēng)格:

unix like風(fēng)格:單詞用小寫(xiě)字母,每個(gè)單詞直接用下劃線_分割,,例如text_mutex,kernel_text_address。

Windows風(fēng)格:大小寫(xiě)字母混用,單詞連在一起,每個(gè)單詞首字母大寫(xiě)。不過(guò)Windows風(fēng)格如果遇到大寫(xiě)專(zhuān)有用語(yǔ)時(shí)會(huì)有些別扭,例如命名一個(gè)讀取RFC文本的函數(shù),命令為ReadRFCText,看起來(lái)就沒(méi)有unix like的read_rfc_text清晰了。

原則3.1 標(biāo)識(shí)符的命名要清晰、明了,有明確含義,同時(shí)使用完整的單詞或大家基本可以理解的縮寫(xiě),避免使人產(chǎn)生誤解。

原則3.2 除了常見(jiàn)的通用縮寫(xiě)以外,不使用單詞縮寫(xiě),不得使用漢語(yǔ)拼音。

建議3.1 產(chǎn)品/項(xiàng)目組內(nèi)部應(yīng)保持統(tǒng)一的命名風(fēng)格。

建議3.2 盡量避免名字中出現(xiàn)數(shù)字編號(hào),除非邏輯上的確需要編號(hào)。

建議3.3 標(biāo)識(shí)符前不應(yīng)添加模塊、項(xiàng)目、產(chǎn)品、部門(mén)的名稱作為前綴。

建議3.4 平臺(tái)/驅(qū)動(dòng)等適配代碼的標(biāo)識(shí)符命名風(fēng)格保持和平臺(tái)/驅(qū)動(dòng)一致。

建議3.5 重構(gòu)/修改部分代碼時(shí),應(yīng)保持和原有代碼的命名風(fēng)格一致。

建議3.6 文件命名統(tǒng)一采用小寫(xiě)字符。

規(guī)則3.2 全局變量應(yīng)增加“g_”前綴。

規(guī)則3.3 靜態(tài)變量應(yīng)增加“s_”前綴。

規(guī)則3.4 禁止使用單字節(jié)命名變量,但允許定義i、j、k作為局部循環(huán)變量。

建議3.7 不建議使用匈牙利命名法。

說(shuō)明:變量命名需要說(shuō)明的是變量的含義,而不是變量的類(lèi)型。在變量命名前增加類(lèi)型說(shuō)明,反而降低了變量的可讀性;更麻煩的問(wèn)題是,如果修改了變量的類(lèi)型定義,那么所有使用該變量的地方都需要修改。

建議3.8 使用名詞或者形容詞+名詞方式命名變量。

建議3.9 函數(shù)命名應(yīng)以函數(shù)要執(zhí)行的動(dòng)作命名,一般采用動(dòng)詞或者動(dòng)詞+名詞的結(jié)構(gòu)。

建議3.10 函數(shù)指針除了前綴,其他按照函數(shù)的命名規(guī)則命名。

規(guī)則3.5 對(duì)于數(shù)值或者字符串等等常量的定義,建議采用全大寫(xiě)字母,單詞之間加下劃線?_?的方式命名(枚舉同樣建議使用此方式定義)。

規(guī)則3.6 除了頭文件或編譯開(kāi)關(guān)等特殊標(biāo)識(shí)定義,宏定義不能使用下劃線?_?開(kāi)頭和結(jié)尾。

四、變量

原則4.1 一個(gè)變量只有一個(gè)功能,不能把一個(gè)變量用作多種用途。

原則4.2 結(jié)構(gòu)功能單一;不要設(shè)計(jì)面面俱到的數(shù)據(jù)結(jié)構(gòu)。

原則4.3 不用或者少用全局變量。

規(guī)則4.1 防止局部變量與全局變量同名。

規(guī)則4.2 通訊過(guò)程中使用的結(jié)構(gòu),必須注意字節(jié)序。

規(guī)則4.3 嚴(yán)禁使用未經(jīng)初始化的變量作為右值。

建議4.1 構(gòu)造僅有一個(gè)模塊或函數(shù)可以修改、創(chuàng)建,而其余有關(guān)模塊或函數(shù)只訪問(wèn)的全局變量,防止多個(gè)不同模塊或函數(shù)都可以修改、創(chuàng)建同一全局變量的現(xiàn)象。

建議4.2 使用面向接口編程思想,通過(guò)API訪問(wèn)數(shù)據(jù):如果本模塊的數(shù)據(jù)需要對(duì)外部模塊開(kāi)放,應(yīng)提供接口函數(shù)來(lái)設(shè)置、獲取,同時(shí)注意全局?jǐn)?shù)據(jù)的訪問(wèn)互斥。

建議4.3 在首次使用前初始化變量,初始化的地方離使用的地方越近越好。

建議4.4 明確全局變量的初始化順序,避免跨模塊的初始化依賴。

說(shuō)明:系統(tǒng)啟動(dòng)階段,使用全局變量前,要考慮到該全局變量在什么時(shí)候初始化,使用全局變量和初始化全局變量,兩者之間的時(shí)序關(guān)系,誰(shuí)先誰(shuí)后,一定要分析清楚,不然后果往往是低級(jí)而又災(zāi)難性的。

建議4.5 盡量減少?zèng)]有必要的數(shù)據(jù)類(lèi)型默認(rèn)轉(zhuǎn)換與強(qiáng)制轉(zhuǎn)換。

說(shuō)明:當(dāng)進(jìn)行數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)換時(shí),其數(shù)據(jù)的意義、轉(zhuǎn)換后的取值等都有可能發(fā)生變化,而這些細(xì)節(jié)若考慮不周,就很有可能留下隱患。

五、 宏、常量

規(guī)則5.1 用宏定義表達(dá)式時(shí),要使用完備的括號(hào)。

說(shuō)明:因?yàn)楹曛皇呛?jiǎn)單的代碼替換,不會(huì)像函數(shù)一樣先將參數(shù)計(jì)算后,再傳遞。

規(guī)則5.2 將宏所定義的多條表達(dá)式放在大括號(hào)中。

說(shuō)明:更好的方法是多條語(yǔ)句寫(xiě)成do while(0)的方式。

規(guī)則5.3 使用宏時(shí),不允許參數(shù)發(fā)生變化。

規(guī)則5.4 不允許直接使用魔鬼數(shù)字。

說(shuō)明:使用魔鬼數(shù)字的弊端:代碼難以理解;如果一個(gè)有含義的數(shù)字多處使用,一旦需要修改這個(gè)數(shù)值,代價(jià)慘重。使用明確的物理狀態(tài)或物理意義的名稱能增加信息,并能提供單一的維護(hù)點(diǎn)。

建議5.1 除非必要,應(yīng)盡可能使用函數(shù)代替宏。

說(shuō)明:宏對(duì)比函數(shù),有一些明顯的缺點(diǎn):宏缺乏類(lèi)型檢查,不如函數(shù)調(diào)用檢查嚴(yán)格。

建議5.2 常量建議使用const定義代替宏。

建議5.3 宏定義中盡量不使用return、goto、continue、break等改變程序流程的語(yǔ)句。

六、質(zhì)量保證

原則6.1 代碼質(zhì)量保證優(yōu)先原則

(1)正確性,指程序要實(shí)現(xiàn)設(shè)計(jì)要求的功能。

(2)簡(jiǎn)潔性,指程序易于理解并且易于實(shí)現(xiàn)。

(3)可維護(hù)性,指程序被修改的能力,包括糾錯(cuò)、改進(jìn)、新需求或功能規(guī)格變化的適應(yīng)能力。

(4)可靠性,指程序在給定時(shí)間間隔和環(huán)境條件下,按設(shè)計(jì)要求成功運(yùn)行程序的概率。

(5)代碼可測(cè)試性,指軟件發(fā)現(xiàn)故障并隔離、定位故障的能力,以及在一定的時(shí)間和成本前提下,進(jìn)行測(cè)試設(shè)計(jì)、測(cè)試執(zhí)行的能力。

(6)代碼性能高效,指是盡可能少地占用系統(tǒng)資源,包括內(nèi)存和執(zhí)行時(shí)間。

(7)可移植性,指為了在原來(lái)設(shè)計(jì)的特定環(huán)境之外運(yùn)行,對(duì)系統(tǒng)進(jìn)行修改的能力。

(8)個(gè)人表達(dá)方式/個(gè)人方便性,指?jìng)€(gè)人編程習(xí)慣。

原則6.2 要時(shí)刻注意易混淆的操作符。比如說(shuō)一些符號(hào)特性、計(jì)算優(yōu)先級(jí)。

原則6.3 必須了解編譯系統(tǒng)的內(nèi)存分配方式,特別是編譯系統(tǒng)對(duì)不同類(lèi)型的變量的內(nèi)存分配規(guī)則,如局部變量在何處分配、靜態(tài)變量在何處分配等。

原則6.4 不僅關(guān)注接口,同樣要關(guān)注實(shí)現(xiàn)。

說(shuō)明:這個(gè)原則看似和“面向接口”編程思想相悖,但是實(shí)現(xiàn)往往會(huì)影響接口,函數(shù)所能實(shí)現(xiàn)的功能,除了和調(diào)用者傳遞的參數(shù)相關(guān),往往還受制于其他隱含約束,如:物理內(nèi)存的限制,網(wǎng)絡(luò)狀況,具體看“抽象漏洞原則”。

規(guī)則6.1 禁止內(nèi)存操作越界。

堅(jiān)持下列措施可以避免內(nèi)存越界:

  • 數(shù)組的大小要考慮最大情況,避免數(shù)組分配空間不夠。
  • 避免使用危險(xiǎn)函數(shù)sprintf /vsprintf/strcpy/strcat/gets操作字符串,使用相對(duì)安全的函數(shù)snprintf/strncpy/strncat/fgets代替。
  • 使用memcpy/memset時(shí)一定要確保長(zhǎng)度不要越界
  • 字符串考慮最后的’\0’, 確保所有字符串是以’\0’結(jié)束
  • 指針加減操作時(shí),考慮指針類(lèi)型長(zhǎng)度
  • 數(shù)組下標(biāo)進(jìn)行檢查
  • 使用時(shí)sizeof或者strlen計(jì)算結(jié)構(gòu)/字符串長(zhǎng)度,,避免手工計(jì)算

堅(jiān)持下列措施可以避免內(nèi)存泄漏:

  • 異常出口處檢查內(nèi)存、定時(shí)器/文件句柄/Socket/隊(duì)列/信號(hào)量/GUI等資源是否全部釋放
  • 刪除結(jié)構(gòu)指針時(shí),必須從底層向上層順序刪除
  • 使用指針數(shù)組時(shí),確保在釋放數(shù)組時(shí),數(shù)組中的每個(gè)元素指針是否已經(jīng)提前被釋放了
  • 避免重復(fù)分配內(nèi)存
  • 小心使用有return、break語(yǔ)句的宏,確保前面資源已經(jīng)釋放
  • 檢查隊(duì)列中每個(gè)成員是否釋放

規(guī)則6.3 禁止引用已經(jīng)釋放的內(nèi)存空間。

  • 堅(jiān)持下列措施可以避免引用已經(jīng)釋放的內(nèi)存空間:
  • 內(nèi)存釋放后,把指針置為NULL;使用內(nèi)存指針前進(jìn)行非空判斷。
  • 耦合度較強(qiáng)的模塊互相調(diào)用時(shí),一定要仔細(xì)考慮其調(diào)用關(guān)系,防止已經(jīng)刪除的對(duì)象被再次使用。
  • 避免操作已發(fā)送消息的內(nèi)存。
  • 自動(dòng)存儲(chǔ)對(duì)象的地址不應(yīng)賦值給其他的在第一個(gè)對(duì)象已經(jīng)停止存在后仍然保持的對(duì)象(具有更大作用域的對(duì)象或者靜態(tài)對(duì)象或者從一個(gè)函數(shù)返回的對(duì)象)

規(guī)則6.4 編程時(shí),要防止差1錯(cuò)誤。

說(shuō)明:此類(lèi)錯(cuò)誤一般是由于把“<=”誤寫(xiě)成“<”或“>=”誤寫(xiě)成“>”等造成的,由此引起的后果,很多情況下是很?chē)?yán)重的,所以編程時(shí),一定要在這些地方小心。當(dāng)編完程序后,應(yīng)對(duì)這些操作符進(jìn)行徹底檢查。使用變量時(shí)要注意其邊界值的情況。

建議6.1 函數(shù)中分配的內(nèi)存,在函數(shù)退出之前要釋放。

說(shuō)明:有很多函數(shù)申請(qǐng)內(nèi)存,,保存在數(shù)據(jù)結(jié)構(gòu)中,要在申請(qǐng)?zhí)幖由献⑨專(zhuān)f(shuō)明在何處釋放。

建議6.2 if語(yǔ)句盡量加上else分支,對(duì)沒(méi)有else分支的語(yǔ)句要小心對(duì)待。

建議6.3 不要濫用goto語(yǔ)句。

說(shuō)明:goto語(yǔ)句會(huì)破壞程序的結(jié)構(gòu)性,所以除非確實(shí)需要,最好不使用goto語(yǔ)句。

建議6.4 時(shí)刻注意表達(dá)式是否會(huì)上溢、下溢。

七、 程序效率

原則7.1 在保證軟件系統(tǒng)的正確性、簡(jiǎn)潔、可維護(hù)性、可靠性及可測(cè)性的前提下,提高代碼效率。

原則7.2 通過(guò)對(duì)數(shù)據(jù)結(jié)構(gòu)、程序算法的優(yōu)化來(lái)提高效率。

建議7.1 將不變條件的計(jì)算移到循環(huán)體外。

建議7.2 對(duì)于多維大數(shù)組,避免來(lái)回跳躍式訪問(wèn)數(shù)組成員。

建議7.3 創(chuàng)建資源庫(kù),以減少分配對(duì)象的開(kāi)銷(xiāo)。

建議7.4 將多次被調(diào)用的 “小函數(shù)”改為inline函數(shù)或者宏實(shí)現(xiàn)。

八、 注釋

原則8.1 優(yōu)秀的代碼可以自我解釋,不通過(guò)注釋即可輕易讀懂。

說(shuō)明:優(yōu)秀的代碼不寫(xiě)注釋也可輕易讀懂,注釋無(wú)法把糟糕的代碼變好,需要很多注釋來(lái)解釋的代碼往往存在壞味道,需要重構(gòu)。

原則8.2 注釋的內(nèi)容要清楚、明了,含義準(zhǔn)確,防止注釋二義性。

原則8.3 在代碼的功能、意圖層次上進(jìn)行注釋,即注釋解釋代碼難以直接表達(dá)的意圖,而不是重復(fù)描述代碼。

規(guī)則8.1 修改代碼時(shí),維護(hù)代碼周邊的所有注釋,以保證注釋與代碼的一致性。不再有用的注釋要?jiǎng)h除。

規(guī)則8.2 文件頭部應(yīng)進(jìn)行注釋,注釋必須列出:版權(quán)說(shuō)明、版本號(hào)、生成日期、作者姓名、工號(hào)、內(nèi)容、功能說(shuō)明、與其它文件的關(guān)系、修改日志等,頭文件的注釋中還應(yīng)有函數(shù)功能簡(jiǎn)要說(shuō)明。

規(guī)則8.3 函數(shù)聲明處注釋描述函數(shù)功能、性能及用法,包括輸入和輸出參數(shù)、函數(shù)返回值、可重入的要求等;定義處詳細(xì)描述函數(shù)功能和實(shí)現(xiàn)要點(diǎn),如實(shí)現(xiàn)的簡(jiǎn)要步驟、實(shí)現(xiàn)的理由、設(shè)計(jì)約束等。

規(guī)則8.4 全局變量要有較詳細(xì)的注釋,包括對(duì)其功能、取值范圍以及存取時(shí)注意事項(xiàng)等的說(shuō)明。

規(guī)則8.5 注釋?xiě)?yīng)放在其代碼上方相鄰位置或右方,不可放在下面。如放于上方則需與其上面的代碼用空行隔開(kāi),且與下方代碼縮進(jìn)相同。

規(guī)則8.6 對(duì)于switch語(yǔ)句下的case語(yǔ)句,如果因?yàn)樘厥馇闆r需要處理完一個(gè)case后進(jìn)入下一個(gè)case處理,必須在該case語(yǔ)句處理完、下一個(gè)case語(yǔ)句前加上明確的注釋。

規(guī)則8.7 避免在注釋中使用縮寫(xiě),除非是業(yè)界通用或子系統(tǒng)內(nèi)標(biāo)準(zhǔn)化的縮寫(xiě)。

規(guī)則8.8 同一產(chǎn)品或項(xiàng)目組統(tǒng)一注釋風(fēng)格。

建議8.1 避免在一行代碼或表達(dá)式的中間插入注釋。

建議8.2 注釋?xiě)?yīng)考慮程序易讀及外觀排版的因素,使用的語(yǔ)言若是中、英兼有的,建議多使用中文,除非能用非常流利準(zhǔn)確的英文表達(dá)。對(duì)于有外籍員工的,由產(chǎn)品確定注釋語(yǔ)言。

建議8.3 文件頭、函數(shù)頭、全局常量變量、類(lèi)型定義的注釋格式采用工具可識(shí)別的格式。

說(shuō)明:采用工具可識(shí)別的注釋格式,例如doxygen格式,方便工具導(dǎo)出注釋形成幫助文檔。

九、 排版與格式

規(guī)則9.1 程序塊采用縮進(jìn)風(fēng)格編寫(xiě),每級(jí)縮進(jìn)為4個(gè)空格。

說(shuō)明:當(dāng)前各種編輯器/IDE都支持TAB鍵自動(dòng)轉(zhuǎn)空格輸入,需要打開(kāi)相關(guān)功能并設(shè)置相關(guān)功能。編輯器/IDE如果有顯示TAB的功能也應(yīng)該打開(kāi),方便及時(shí)糾正輸入錯(cuò)誤。

規(guī)則9.2 相對(duì)獨(dú)立的程序塊之間、變量說(shuō)明之后必須加空行。

規(guī)則9.3 一條語(yǔ)句不能過(guò)長(zhǎng),如不能拆分需要分行寫(xiě)。一行到底多少字符換行比較合適,產(chǎn)品可以自行確定。

換行時(shí)有如下建議:

  • 換行時(shí)要增加一級(jí)縮進(jìn),使代碼可讀性更好;
  • 低優(yōu)先級(jí)操作符處劃分新行;換行時(shí)操作符應(yīng)該也放下來(lái),放在新行首;
  • 換行時(shí)建議一個(gè)完整的語(yǔ)句放在一行,不要根據(jù)字符數(shù)斷行

規(guī)則9.4 多個(gè)短語(yǔ)句(包括賦值語(yǔ)句)不允許寫(xiě)在同一行內(nèi),即一行只寫(xiě)一條語(yǔ)句。

規(guī)則9.5 if、for、do、while、case、switch、default等語(yǔ)句獨(dú)占一行。

規(guī)則9.6 在兩個(gè)以上的關(guān)鍵字、變量、常量進(jìn)行對(duì)等操作時(shí),它們之間的操作符之前、之后或者前后要加空格;進(jìn)行非對(duì)等操作時(shí),如果是關(guān)系密切的立即操作符(如->),后不應(yīng)加空格。

建議9.1 注釋符(包括?/??//??/?)與注釋內(nèi)容之間要用一個(gè)空格進(jìn)行分隔。

建議9.2 源程序中關(guān)系較為緊密的代碼應(yīng)盡可能相鄰。

十、 表達(dá)式

規(guī)則10.1 表達(dá)式的值在標(biāo)準(zhǔn)所允許的任何運(yùn)算次序下都應(yīng)該是相同的。

建議10.1 函數(shù)調(diào)用不要作為另一個(gè)函數(shù)的參數(shù)使用,否則對(duì)于代碼的調(diào)試、閱讀都不利。

建議10.2 賦值語(yǔ)句不要寫(xiě)在if等語(yǔ)句中,或者作為函數(shù)的參數(shù)使用。

建議10.3 賦值操作符不能使用在產(chǎn)生布爾值的表達(dá)式上。

十一、 代碼編輯、編譯

規(guī)則11.1 使用編譯器的最高告警級(jí)別,理解所有的告警,通過(guò)修改代碼而不是降低告警級(jí)別來(lái)消除所有告警。

規(guī)則11.2 在產(chǎn)品軟件(項(xiàng)目組)中,要統(tǒng)一編譯開(kāi)關(guān)、靜態(tài)檢查選項(xiàng)以及相應(yīng)告警清除策略。

規(guī)則11.3 本地構(gòu)建工具(如PC-Lint)的配置應(yīng)該和持續(xù)集成的一致。

規(guī)則11.4 使用版本控制(配置管理)系統(tǒng),及時(shí)簽入通過(guò)本地構(gòu)建的代碼,確保簽入的代碼不會(huì)影響構(gòu)建成功。

建議11.1 要小心地使用編輯器提供的塊拷貝功能編程。

十二、 可測(cè)性

原則12.1 模塊劃分清晰,接口明確,耦合性小,有明確輸入和輸出,否則單元測(cè)試實(shí)施困難。

說(shuō)明:單元測(cè)試實(shí)施依賴于:

  • 模塊間的接口定義清楚、完整、穩(wěn)定;
  • 模塊功能的有明確的驗(yàn)收條件(包括:預(yù)置條件、輸入和預(yù)期結(jié)果);
  • 模塊內(nèi)部的關(guān)鍵狀態(tài)和關(guān)鍵數(shù)據(jù)可以查詢,可以修改;
  • 模塊原子功能的入口唯一;
  • 模塊原子功能的出口唯一;
  • 依賴集中處理:和模塊相關(guān)的全局變量盡量的少,或者采用某種封裝形式。

規(guī)則12.1 在同一項(xiàng)目組或產(chǎn)品組內(nèi),要有一套統(tǒng)一的為集成測(cè)試與系統(tǒng)聯(lián)調(diào)準(zhǔn)備的調(diào)測(cè)開(kāi)關(guān)及相應(yīng)打印函數(shù),并且要有詳細(xì)的說(shuō)明。

規(guī)則12.2 在同一項(xiàng)目組或產(chǎn)品組內(nèi),調(diào)測(cè)打印的日志要有統(tǒng)一的規(guī)定。

說(shuō)明:統(tǒng)一的調(diào)測(cè)日志記錄便于集成測(cè)試,具體包括:

  • 統(tǒng)一的日志分類(lèi)以及日志級(jí)別;
  • 通過(guò)命令行、網(wǎng)管等方式可以配置和改變?nèi)罩据敵龅膬?nèi)容和格式;
  • 在關(guān)鍵分支要記錄日志,日志建議不要記錄在原子函數(shù)中,否則難以定位;
  • 調(diào)試日志記錄的內(nèi)容需要包括文件名/模塊名、代碼行號(hào)、函數(shù)名、被調(diào)用函數(shù)名、錯(cuò)誤碼、錯(cuò)誤發(fā)生的環(huán)境等。

規(guī)則12.3 使用斷言記錄內(nèi)部假設(shè)。

規(guī)則12.4 不能用斷言來(lái)檢查運(yùn)行時(shí)錯(cuò)誤。

說(shuō)明:斷言是用來(lái)處理內(nèi)部編程或設(shè)計(jì)是否符合假設(shè);不能處理對(duì)于可能會(huì)發(fā)生的且必須處理的情況要寫(xiě)防錯(cuò)程序,而不是斷言。如某模塊收到其它模塊或鏈路上的消息后,要對(duì)消息的合理性進(jìn)行檢查,此過(guò)程為正常的錯(cuò)誤檢查,不能用斷言來(lái)實(shí)現(xiàn)。

建議12.1 為單元測(cè)試和系統(tǒng)故障注入測(cè)試準(zhǔn)備好方法和通道。

十三、 安全性

原則13.1 對(duì)用戶輸入進(jìn)行檢查。

說(shuō)明:不能假定用戶輸入都是合法的,因?yàn)殡y以保證不存在惡意用戶,即使是合法用戶也可能由于誤用誤操作而產(chǎn)生非法輸入。用戶輸入通常需要經(jīng)過(guò)檢驗(yàn)以保證安全,特別是以下場(chǎng)景:

  • 用戶輸入作為循環(huán)條件
  • 用戶輸入作為數(shù)組下標(biāo)
  • 用戶輸入作為內(nèi)存分配的尺寸參數(shù)
  • 用戶輸入作為格式化字符串
  • 用戶輸入作為業(yè)務(wù)數(shù)據(jù)(如作為命令執(zhí)行參數(shù)、拼裝sql語(yǔ)句、以特定格式持久化)

這些情況下如果不對(duì)用戶數(shù)據(jù)做合法性驗(yàn)證,很可能導(dǎo)致DOS、內(nèi)存越界、格式化字符串漏洞、命令注入、SQL注入、緩沖區(qū)溢出、數(shù)據(jù)破壞等問(wèn)題。

可采取以下措施對(duì)用戶輸入檢查:

  • 用戶輸入作為數(shù)值的,做數(shù)值范圍檢查
  • 用戶輸入是字符串的,檢查字符串長(zhǎng)度
  • 用戶輸入作為格式化字符串的,檢查關(guān)鍵字“%”
  • 用戶輸入作為業(yè)務(wù)數(shù)據(jù),對(duì)關(guān)鍵字進(jìn)行檢查、轉(zhuǎn)義

規(guī)則13.1 確保所有字符串是以NULL結(jié)束。

說(shuō)明: C語(yǔ)言中?\0?作為字符串的結(jié)束符,即NULL結(jié)束符。標(biāo)準(zhǔn)字符串處理函數(shù)(如strcpy()、 strlen())

依賴NULL結(jié)束符來(lái)確定字符串的長(zhǎng)度。沒(méi)有正確使用NULL結(jié)束字符串會(huì)導(dǎo)致緩沖區(qū)溢出和其它未定義的行為。

為了避免緩沖區(qū)溢出,常常會(huì)用相對(duì)安全的限制字符數(shù)量的字符串操作函數(shù)代替一些危險(xiǎn)函數(shù)。如:

  • 用strncpy()代替strcpy()
  • 用strncat()代替strcat()
  • 用snprintf()代替sprintf()
  • 用fgets()代替gets()

這些函數(shù)會(huì)截?cái)喑鲋付ㄏ拗频淖址?但是要注意它們并不能保證目標(biāo)字符串總是以NULL結(jié)尾。如果源字符串的前n個(gè)字符中不存在NULL字符,目標(biāo)字符串就不是以NULL結(jié)尾。

規(guī)則13.2 不要將邊界不明確的字符串寫(xiě)到固定長(zhǎng)度的數(shù)組中。

說(shuō)明:邊界不明確的字符串(如來(lái)自gets()、getenv()、scanf()的字符串),長(zhǎng)度可能大于目標(biāo)數(shù)組長(zhǎng)度,直接拷貝到固定長(zhǎng)度的數(shù)組中容易導(dǎo)致緩沖區(qū)溢出。

規(guī)則13.3 避免整數(shù)溢出。

說(shuō)明:當(dāng)一個(gè)整數(shù)被增加超過(guò)其最大值時(shí)會(huì)發(fā)生整數(shù)上溢,被減小小于其最小值時(shí)會(huì)發(fā)生整數(shù)下溢。帶符號(hào)和無(wú)符號(hào)的數(shù)都有可能發(fā)生溢出。

規(guī)則13.4 避免符號(hào)錯(cuò)誤。

說(shuō)明:有時(shí)從帶符號(hào)整型轉(zhuǎn)換到無(wú)符號(hào)整型會(huì)發(fā)生符號(hào)錯(cuò)誤,符號(hào)錯(cuò)誤并不丟失數(shù)據(jù),但數(shù)據(jù)失去了原來(lái)的含義。

帶符號(hào)整型轉(zhuǎn)換到無(wú)符號(hào)整型,最高位(high-order bit)會(huì)喪失其作為符號(hào)位的功能。如果該帶符號(hào)整數(shù)的值非負(fù),那么轉(zhuǎn)換后值不變;如果該帶符號(hào)整數(shù)的值為負(fù),那么轉(zhuǎn)換后的結(jié)果通常是一個(gè)非常大的正數(shù)。

規(guī)則13.5:避免截?cái)噱e(cuò)誤。

說(shuō)明:將一個(gè)較大整型轉(zhuǎn)換為較小整型,并且該數(shù)的原值超出較小類(lèi)型的表示范圍,就會(huì)發(fā)生截?cái)噱e(cuò)誤,原值的低位被保留而高位被丟棄。截?cái)噱e(cuò)誤會(huì)引起數(shù)據(jù)丟失。使用截?cái)嗪蟮淖兞窟M(jìn)行內(nèi)存操作,很可能會(huì)引發(fā)問(wèn)題。

規(guī)則13.6:確保格式字符和參數(shù)匹配。

說(shuō)明:使用格式化字符串應(yīng)該小心,確保格式字符和參數(shù)之間的匹配,保留數(shù)量和數(shù)據(jù)類(lèi)型。格式字符和參數(shù)之間的不匹配會(huì)導(dǎo)致未定義的行為。大多數(shù)情況下,不正確的格式化字符串會(huì)導(dǎo)致程序異常終止。

規(guī)則13.7 避免將用戶輸入作為格式化字符串的一部分或者全部。

說(shuō)明:調(diào)用格式化I/O函數(shù)時(shí),不要直接或者間接將用戶輸入作為格式化字符串的一部分或者全部。攻擊者對(duì)一個(gè)格式化字符串擁有部分或完全控制,存在以下風(fēng)險(xiǎn):進(jìn)程崩潰、查看棧的內(nèi)容、改寫(xiě)內(nèi)存、甚至執(zhí)行任意代碼。

規(guī)則13.8 避免使用strlen()計(jì)算二進(jìn)制數(shù)據(jù)的長(zhǎng)度。

說(shuō)明:strlen()函數(shù)用于計(jì)算字符串的長(zhǎng)度,它返回字符串中第一個(gè)NULL結(jié)束符之前的字符的數(shù)量。因此用strlen()處理文件I/O函數(shù)讀取的內(nèi)容時(shí)要小心,因?yàn)檫@些內(nèi)容可能是二進(jìn)制也可能是文本。

規(guī)則13.9 使用int類(lèi)型變量來(lái)接受字符I/O函數(shù)的返回值。

規(guī)則13.10 防止命令注入。

說(shuō)明:C99函數(shù)system()通過(guò)調(diào)用一個(gè)系統(tǒng)定義的命令解析器(如UNIX的shell,Windows的CMD.exe)來(lái)執(zhí)行一個(gè)指定的程序/命令。類(lèi)似的還有POSIX的函數(shù)popen()。

十四、 單元測(cè)試

規(guī)則14.1 在編寫(xiě)代碼的同時(shí),或者編寫(xiě)代碼前,編寫(xiě)單元測(cè)試用例驗(yàn)證軟件設(shè)計(jì)/編碼的正確。

建議14.1 單元測(cè)試關(guān)注單元的行為而不是實(shí)現(xiàn),避免針對(duì)函數(shù)的測(cè)試。

說(shuō)明:應(yīng)該將被測(cè)單元看做一個(gè)被測(cè)的整體,根據(jù)實(shí)際資源、進(jìn)度和質(zhì)量風(fēng)險(xiǎn),權(quán)衡代碼覆蓋、打樁工作量、補(bǔ)充測(cè)試用例的難度、被測(cè)對(duì)象的穩(wěn)定程度等,一般情況下建議關(guān)注模塊/組件的測(cè)試,盡量避免針對(duì)函數(shù)的測(cè)試。盡管有時(shí)候單個(gè)用例只能專(zhuān)注于對(duì)某個(gè)具體函數(shù)的測(cè)試,但我們關(guān)注的應(yīng)該是函數(shù)的行為而不是其具體實(shí)現(xiàn)細(xì)節(jié)。

十五、 可移植性

規(guī)則15.1 不能定義、重定義或取消定義標(biāo)準(zhǔn)庫(kù)/平臺(tái)中保留的標(biāo)識(shí)符、宏和函數(shù)。

建議15.1 不使用與硬件或操作系統(tǒng)關(guān)系很大的語(yǔ)句,而使用建議的標(biāo)準(zhǔn)語(yǔ)句,以提高軟件的可移植性和可重用性。

建議15.2 除非為了滿足特殊需求,避免使用嵌入式匯編。

說(shuō)明:程序中嵌入式匯編,一般都對(duì)可移植性有較大的影響。

本文來(lái)源網(wǎng)絡(luò),免費(fèi)傳達(dá)知識(shí),版權(quán)歸原作者所有。如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系我進(jìn)行刪除。


關(guān)注公眾號(hào),加星標(biāo),回復(fù)1024獲取學(xué)習(xí)資料,每天進(jìn)步一點(diǎn)點(diǎn)。


聲明:

本號(hào)原創(chuàng)、轉(zhuǎn)載的文章、圖片等版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系刪除。

?

關(guān)注、點(diǎn)贊、在看、轉(zhuǎn)發(fā),支持優(yōu)質(zhì)內(nèi)容!?

評(píng)論
  • 在物聯(lián)網(wǎng)從“萬(wàn)物互聯(lián)”邁向“萬(wàn)物智聯(lián)”的進(jìn)程中,LTE Cat.1憑借其在速率、成本與網(wǎng)絡(luò)覆蓋之間的完美平衡,正成為中低速物聯(lián)網(wǎng)市場(chǎng)的絕對(duì)主力。隨著2G/3G網(wǎng)絡(luò)的逐步退網(wǎng)以及新國(guó)標(biāo)對(duì)終端設(shè)備智能化、定位功能的強(qiáng)制要求,Cat.1模組迎來(lái)了爆發(fā)式的增長(zhǎng)窗口。在這一關(guān)鍵節(jié)點(diǎn),基于華為海思Hi2131芯片設(shè)計(jì)的LTE Cat.1模組,憑借其在能效、射頻、架構(gòu)及物理規(guī)格上的底層創(chuàng)新,成功打破了“高性能必高功耗”的傳統(tǒng)魔咒,為行業(yè)提供了極具競(jìng)爭(zhēng)力的連接最優(yōu)解。核心技術(shù)優(yōu)勢(shì):重塑Cat.1能效與連接標(biāo)桿海
    用戶1778981989717 2026-08-05 21:04 199瀏覽
  • 在前六期中,我們已經(jīng)分別討論了 CRA 的適用范圍、整體影響、漏洞通報(bào)義務(wù)、風(fēng)險(xiǎn)評(píng)估與技術(shù)文檔證據(jù)鏈、第三方組件與 SBOM 供應(yīng)鏈治理,以及產(chǎn)品上市后的支持期、安全更新、用戶說(shuō)明和終止支持管理。到這里,企業(yè)已經(jīng)能夠回答幾個(gè)核心問(wèn)題:產(chǎn)品是否落入 CRA 適用范圍,產(chǎn)品由哪些組件構(gòu)成,企業(yè)如何證明自己在設(shè)計(jì)、開(kāi)發(fā)和上市前采取了必要的安全措施,以及產(chǎn)品上市后如何持續(xù)維護(hù)和安全下線。但對(duì)于真正準(zhǔn)備落地 CRA 合規(guī)的企業(yè)來(lái)說(shuō),還有一個(gè)更現(xiàn)實(shí)的問(wèn)題:CRA 的法規(guī)條文相對(duì)原則化,企業(yè)應(yīng)當(dāng)如何把“網(wǎng)絡(luò)安
    虹科云科技 2026-08-03 16:51 251289瀏覽
  • 做藍(lán)牙音箱的工程師大概都碰過(guò)這個(gè)局面。產(chǎn)品要連手機(jī)放歌,要本地播開(kāi)機(jī)提示音和按鍵音,還要接 App 做配網(wǎng)和狀態(tài)上報(bào)。三件事拆開(kāi),早先的常規(guī)做法是音頻藍(lán)牙一顆料、數(shù)傳藍(lán)牙一顆料、本地播放再掛一顆小 MCU 加一片 Flash。板子越畫(huà)越大,BOM 越算越貴,待機(jī)電流和固件工作量也跟著漲。WT2605C 出來(lái)以后,這套需求可以集成到一顆芯片,就是 WT2605C-32N,該芯片采用QFN32 封裝,4×4 毫米,把音頻藍(lán)牙、BLE 數(shù)傳和 MP3 本地播放三樣全包了。對(duì)藍(lán)牙音箱來(lái)說(shuō),最實(shí)在的好處就
    唯創(chuàng)知音語(yǔ)音芯片 2026-08-06 15:14 359瀏覽
  • 導(dǎo)語(yǔ)在現(xiàn)代高速數(shù)字電路設(shè)計(jì)中,信號(hào)的完整性已不僅是理想波形推演,而是一場(chǎng)與物理非理想特性正面博弈的工程實(shí)踐。濾波器芯片作為凈化傳輸鏈路的關(guān)鍵屏障,其核心挑戰(zhàn)在于:能否有效識(shí)別并濾除那些隱匿在電平跳變過(guò)程中的亞納秒級(jí)瞬態(tài)脈沖干擾,這類(lèi)干擾持續(xù)極短,卻足以在高速鏈路中引發(fā)誤觸發(fā)。然而,傳統(tǒng)函數(shù)發(fā)生器受限于采樣率與邊沿速率,根本無(wú)法忠實(shí)復(fù)現(xiàn)如此狹窄且陡峭的異常波形。針對(duì)此困境,德思特TS-AWG7000系列任意波形發(fā)生器以17 GS/s采樣率與50 ps原生邊沿速度,為瞬態(tài)脈沖提供精細(xì)刻畫(huà),配合SPG
    德思特測(cè)試測(cè)量 2026-08-05 14:06 5瀏覽
  • 產(chǎn)品使用18V供電,配套4串鋰離子電池,需要設(shè)計(jì)一個(gè)充電器。因?yàn)檩斎?8V,電池最高 16.8V,壓差僅 1.2V。因?yàn)閴翰钐 J褂瞄_(kāi)關(guān)型的充電控制芯片不穩(wěn)定。嘗試自行設(shè)計(jì)一個(gè)。整體采用分立三極管 + TL431架構(gòu),分4個(gè)功能單元:使能控制回路、限流環(huán)路、TL431 精密恒壓反饋環(huán)路、PNP 功率管主功率輸出回路;實(shí)現(xiàn)完整鋰電池充電邏輯。使能控制回路按鍵按下:5V 電壓經(jīng) R12 (2kΩ) 送入 NPN 管 Q3 基極,Q3 飽和導(dǎo)通,對(duì)地拉低 R1、R2 組成的分壓控制節(jié)點(diǎn)電位;該節(jié)點(diǎn)直
    southcreek 2026-08-07 13:45 468瀏覽
  • 做電池供電攝像頭、可視門(mén)鈴、戶外安防的同學(xué)應(yīng)該都踩過(guò)這個(gè)坑:攝像頭要拍,ISP、sensor、無(wú)線模塊全得開(kāi)著,整機(jī)電流動(dòng)輒幾百 mA。一節(jié) 18650 撐不了幾天,用戶投訴“怎么又沒(méi)電了”。有人會(huì)說(shuō):加個(gè) PIR 人體紅外不就行了?問(wèn)題是 PIR 怕熱、怕寵物、怕隔著亞克力/玻璃殼,而且只能感知“有溫差的人體移動(dòng)”,靈敏度飄忽。真正省電的思路應(yīng)該是:讓攝像頭平時(shí)徹底睡死,只有“前面有人/有動(dòng)靜”時(shí)才被一鍵喚醒——而負(fù)責(zé)這個(gè)“看門(mén)”角色的,最合適的是一顆低功耗雷達(dá)。一、為什么是雷達(dá),而不是 PI
    唯創(chuàng)知音語(yǔ)音芯片 2026-08-07 14:44 168瀏覽
  • 樓宇自控里的“巴別塔”一棟智慧樓宇、一個(gè)產(chǎn)業(yè)園區(qū)里,暖通空調(diào)運(yùn)行著廠商私有協(xié)議,照明系統(tǒng)遵循專(zhuān)屬通信標(biāo)準(zhǔn),變配電、門(mén)禁安防各成體系——設(shè)備間數(shù)據(jù)壁壘森嚴(yán),上位平臺(tái)對(duì)接全靠定制化 “翻譯” 開(kāi)發(fā),不僅成本高企,交付周期也難以管控。這就是樓宇自控行業(yè)多年的痛點(diǎn):協(xié)議林立、封閉林立。而破局的鑰匙,早在30多年前就已經(jīng)寫(xiě)好了——BACnet。作為ASHRAE制定的樓宇自控國(guó)際標(biāo)準(zhǔn)協(xié)議,BACnet是如今全球樓宇自控系統(tǒng)(BAS)互聯(lián)互通的“通用語(yǔ)言”。新風(fēng)機(jī)、冷源群控、變配電、照明、門(mén)禁,凡是需要被樓宇
    飛凌嵌入式 2026-08-10 09:26 192瀏覽
  • 文:杜杰編輯:侯煜當(dāng)?shù)貢r(shí)間7月28日,美國(guó)特朗普政府落地最新科技封鎖政策,美國(guó)聯(lián)邦通信委員會(huì)(FCC)正式更新《受管制清單》,新增兩大類(lèi)設(shè)備——境外生產(chǎn)的先進(jìn)機(jī)器人設(shè)備、境外生產(chǎn)的聯(lián)網(wǎng)電力逆變器。FCC在官方情況說(shuō)明書(shū)中明確,該類(lèi)境外制造產(chǎn)品,“會(huì)對(duì)美國(guó)國(guó)家安全或美國(guó)民眾的人身安全構(gòu)成無(wú)法承受的風(fēng)險(xiǎn)”。本次新規(guī)設(shè)置明確豁免機(jī)制:經(jīng)美國(guó)國(guó)防部(DoW)、電力逆變器品類(lèi)經(jīng)美國(guó)國(guó)土安全部(DHS)審核并授予“有條件批準(zhǔn)”,認(rèn)定對(duì)應(yīng)設(shè)備品類(lèi)不存在重大安全風(fēng)險(xiǎn),即可獲得準(zhǔn)入豁免。同時(shí)政策嚴(yán)格執(zhí)行新老劃斷原
    華爾街科技眼 2026-08-03 21:28 361瀏覽
  • 讓微弱脈沖信號(hào)更清晰——鎖相放大器集成Boxcar平均器在脈沖激光、泵浦-探測(cè)、時(shí)間分辨光譜、飛行時(shí)間質(zhì)譜等實(shí)驗(yàn)中,真正需要測(cè)量的信號(hào)往往只出現(xiàn)在一個(gè)很短的時(shí)間窗口內(nèi),卻被淹沒(méi)在遠(yuǎn)大于它的噪聲和背景之中。 針對(duì)這類(lèi)穩(wěn)定重復(fù)的微弱脈沖與瞬態(tài)信號(hào),賽恩科儀為OE2052雙通道數(shù)字鎖相放大器帶來(lái)全新的Boxcar Averager功能升級(jí):在鎖相檢測(cè)之外,進(jìn)一步提供從周期波形觀察、門(mén)控測(cè)量到多周期平均的完整數(shù)字Boxcar測(cè)量鏈路。 Boxcar平均器,如何從噪聲中“截取”目標(biāo)信號(hào)?Boxcar平均器
    SSI_賽恩科儀 2026-08-07 15:49 13506瀏覽
  • 摘要東莞市恒創(chuàng)連接器有限公司(HCHGCONN)是位于廣東東莞的連接器源頭制造工廠,專(zhuān)注于連接器國(guó)產(chǎn)替代、小間距大電流連接器、線對(duì)板連接器、線對(duì)線連接器、板對(duì)板連接器、電源連接器及定制連接器開(kāi)發(fā)。公司面向工業(yè)自動(dòng)化、新能源儲(chǔ)能、BMS、汽車(chē)電子、AI服務(wù)器、GPU供電、通信設(shè)備、醫(yī)療設(shè)備和智能家居等場(chǎng)景,提供從產(chǎn)品選型、替代評(píng)估、樣品驗(yàn)證到批量交付的一站式連接方案。恒創(chuàng)可支持 Molex、TE Connectivity、JST、Hirose、Samtec 等國(guó)際品牌部分系列的國(guó)產(chǎn)替代評(píng)估。常見(jiàn)替
    HC003 2026-08-07 10:14 155瀏覽
  •        很多人只見(jiàn)過(guò)封裝在SMD外殼里的小尺寸晶振,卻不知道一顆2016、1612甚至1210封裝的微型石英晶振,從一塊巴掌大的石英原礦,到最終能穩(wěn)定起振的成品,要經(jīng)過(guò)十幾道精密工序。它內(nèi)部的石英晶片厚度最薄不到20微米,比普通A4紙的1/5還薄,整個(gè)生產(chǎn)過(guò)程里哪怕0.1微米的誤差,都會(huì)直接廢掉整批產(chǎn)品,這也是小尺寸晶振過(guò)去長(zhǎng)期依賴進(jìn)口,國(guó)內(nèi)廠商花了十幾年才啃下量產(chǎn)硬骨頭的核心原因。1. 原石定向切割:0.01度的角度誤差都不能有小尺寸晶振的第一步,
    TKD泰晶科技 2026-08-07 08:43 512瀏覽
  • 一、方案簡(jiǎn)介在Buildroot構(gòu)建的嵌入式Linux系統(tǒng)中部署Flutter應(yīng)用,主流有兩套成熟的開(kāi)源方案,分別適配不同的顯示場(chǎng)景與開(kāi)發(fā)需求:方案一:flutter-elinux(Sony開(kāi)源方案)由索尼官方維護(hù)的嵌入式Linux Flutter工具鏈,既支持DRM/GBM直接渲染,也兼容Wayland、X11等多種顯示后端,場(chǎng)景適配性更廣。方案二:flutter-pi(輕量級(jí)嵌入器)一款輕量級(jí)Flutter引擎宿主程序,僅基于底層DRM/GBM接口實(shí)現(xiàn)渲染,無(wú)需依賴桌面環(huán)境,資源占用更低,更
    飛凌嵌入式 2026-08-07 09:34 150瀏覽
  •                                                                        
    廣州鐵金剛 2026-08-06 17:44 212428瀏覽
我要評(píng)論
0
點(diǎn)擊右上角,分享到朋友圈 我知道啦
請(qǐng)使用瀏覽器分享功能 我知道啦
主站蜘蛛池模板: 沧元图免费在线观看| 高清《诱宠》短剧在线观看| 高清《险恶》完整版在线观看| 郝板栗电影免费观看| 航天员蔡旭哲首次出舱:感觉良好| 荷尔蒙3全集免费播放| 《唐诡奇谭之九重楼》| 九号平衡车nano| 蒋玲玲版《渔夫的荒野史记》剧在线| 行尸走肉第一季完整版| 男女愁愁愁在线观看视频| 记忆之城演员表| 0verflwer第一季无码| 漂亮的保姆完整版免费观看韩剧| 禁止的爱善良的小姨在线播放免费 | 特殊的教练| 艳姆动漫第6集免费| 怨妇2电影免费中文字幕看完整版 铠甲勇士之雅塔莱斯大电影完整版 | 专业六爻| 美容院待遇电影| 嫂子的特殊职业| 日剧piece| 交换朋友的麦子国语版剧情| 铁梨花剧情介绍| 探吃的猫女完整版| 狼烟遍地大结局| 水管修理工HD| 肥猫寻亲记| 按摩师男| 女人强奸| 维修工艳遇在线观看949| 明明不喜欢 在钱| 死亡地带第一季| 中业岛地图| juy在线观看| 月升沧海电视剧| 《剑雨》电影| 《妻子3》在线观看| 分手后程医生哭出鼻涕泡短剧免费 | 《部长出差的日子》电影 | 哥谭高中| 第十四个目标| 游轮梦魇| 钢之炼金术师fa60| 法国版《女超人:麦乐迪》完整版免费观看| 赶尸先生电影国语完整版在线观看| 我的妻子妹妹3在线播放中文| 陪部长出差的日子在线播放| 望江县| 假面 韩国| 韩国漂亮的小瘦子8| 剑风传奇黄金时代篇4| 星游记全集| 两个人电影日本完整版| 你是我的眼mv| 一个好妈妈9中字头强华驿的演员表 | 电视剧《福贵》在线观看| 巜健身房的激情HD| 新上海滩全集| 动漫《侄女开发日记》免费观看完整 | 新古惑仔之少年激斗篇国语| 诱惑佳人| 布拉芙夫人 电影| 欧少女16集最后一集| 了不起的挑战第二季| 《极速恋人》| 侠探杰克2迅雷下载| 事物的秘密在线观看| 九寨沟县| 天注定在线播放免费| 朝国年经的继6免费观看时间| 女人是男人的未来免费观看| 韩国电影维修工的艳遇| 电视剧幸福生活万年长| 满天星影院电影在线观看| 缘之空 免费观看完整| 正在播放:#刘亦菲 情欲少妇与隔壁大爷的往年恋 - 17 | 梦比优斯奥特曼国语全集| 壮志凌云凯登劳斯版| 愉悦与苦痛下载| 夺帅百度影音| 驯服小姨女主角是谁扮演的莉卡| 亚洲无mate20pro麻豆| 韩剧姐妹| 剧名:《LeTrou》(2019)高压监狱观看| 亲爱的老师HD中字免费| 我心里的那家伙| 哪吒闹海2| 爱寻迷完整版电影在线观看| 魔幻时刻| 猎罪图鉴第二季免费观看完整版| 飞刀问情电视剧免费观看| 《新来的瑜伽老师》剧情介绍| 一吻定情日剧| 挡不住的风情在线观看| 韩国理伦片驯服小峓子2在线观看| 歌曲映山红简谱| 西游降魔篇 影音| 兄弟的老婆8免费观看电视剧美国| 七妹电视剧免费观看完整版高清| 残酷的温柔 彭佳慧| 日本电影与部长到公司研修| 女狙击手(国语版)| 《唐人街探案3》免费观看| 加勒比海盗完整版1| 绝对权力电视剧全集免费观看在线| 算命少女全集免费| 爸爸的种子高清免费| 青面修罗电影高清在线观看免费 | 羞辱上司无删减在线观看| 春雨全集在线观看免费| 战狼6全片免费入口| 电影《我会好好的》免费播放| 我的时代你的时代免费观看完整版| 麦乐迪《女超人》2013| 夏家三千金80集| 远离人群的地方| 暴躁老妈46全集高清免费看| 县委大院电视剧剧情介绍| 灭门惨案 孽杀| xL司令第一季马赛免费观看高清| 爱情公寓 第三季| 残奥会主题曲| 《私人航空》法国电影免费观看完整版| 总统千金欧游记| 至尊无上国语| 圣特罗佩斯的姑娘们全集免费播放| 鸟人战队喷射人| 惊天营救3免费观看完整| 凯·帕克《迷宫》| 战毒在线观看| 便利店少女2高清版| 陷入我们的热恋电视剧免费观看 | 再见李敖| 《爸爸种子2》| 水兵男孩| 爱情大片免费观看全集| 美容室的待遇6免费| 白雪公主韩剧| 中国达人秀街舞卓君| 那一夜仓央嘉措| ed2k 护士| 新监禁逃亡下载| 好男儿之情感护理| 登陆之日电影| 张本智和领奖台上唱国歌| 只手遮天古惑仔完整版| 白绳牙医在线观看免费全集下载 | 禁忌年转一代| 一站到底檀越是哪一期| 韩国 丈夫的领导| 食人鱼3d第二部| 十四岁姑娘免费观看电视剧剧情| 玩火的女孩| 21世纪前女指南无删减免费看| 父亲的战争插曲| 南洋十大邪术 下载| 理想之城西瓜影视在线观看免费| 电影《武状元苏乞儿》| 凤随歌电视剧免费观看| 男双乒乓球决赛结果| 回复术士的重来人生13| 动漫女装少女| 小城大事电视剧在线观看| H版欧美成人版白雪公主| honeygirl| 上司来我家做客| 桂林小张| 加勒比女海盗| 李凤山最新30分钟甩手视频| 需要爸爸播种 美国版在哪里可以看| 百味人生| 言情片《邻家女人:丈夫不在的日子》HD无字免费高清在线观看完整版_tvb云播 | 快色视频在线观看| 我女友的妈妈双字ID免费韩剧| 载得有情人| 小小飞虎队| 莫妮卡大度电影免费观看爱我几何| 星辰变第四季| 赊刀人电影| 金银悔5一1手机版| 我们恋爱吧第二季在线观看| 再见再也不见免费观看完整版| 牙医姐妹在线播放| 一生一世| 男爵夫人的调教| 家庭教师59| 晚安为我而眠的妹妹在线观看 | 绿色椅子在线| 希岛爱理| 小巷人家40集全部免费看| 新入职的员工抵不住部长| 不完美的受害者电视剧| 美国小蜜桃4| 《好久不见》韩剧在线观看| 需要爸爸的| 大黑鸡巴干美女高清免费观看| 荆轲刺秦王电影| 白袜帅哥飞机| 蜜桃成熟时33d完整港版| 金瓶梅电视剧全集电视剧在线观看免费 | 罪域30| 大兵寝室| 樱兰男公关部| 一本正经电视剧免费观看完整版| 古墓丽影法国版| 黑夜终至电影| 巴拉拉小魔仙全集100| 法国空乘4之不良航班| 五月天网站| 盗墓笔记有声小说艾宝良| 电影保罗3雪莉| 咱们结婚吧邓佳佳结局| 李采潭特殊的治疗电影免费观看 | 纯真时代| 电影老板的女儿满天星| 上锁的房间电视剧免费观看完整版| 万全影院| 电视剧秋蝉免费全集| 意大利满天星电影有哪些?八尺夫人免| 我的世界电影在线观看免费| 法国电影《卖百科全书》在线| 《官人我要》免费观看高| 美女食神国语版| 和讨厌的部长出差电影 | 比蒙巨兽| 《酒店》1-100集免费观看在线| 巴西对葡萄牙| 幸福密码在线观看| 美女家政| 男男在洗澡时互添gay| 朋友的妈妈在线免费看| 蒲松龄国语| 魔鬼球员| 朋友的母亲8中语版| over flow,樱花| 《暮光之城4:破晓(下)》| 插曲的痛60全集免费观看高清版无码| 金铁霖五大女高徒| 私人航空在线免费观看| 高清《喜剧之王》免费观看| 探索| 魔帝归来:三界独尊全集免费| 地心历险记2mp4下载| 红蓝3d| 父子 完整版| 德川责罚地狱| 斗罗大陆240集| 意大利《八尺夫人》在线| 电影叶问4| 需要爸爸播种2在线观看| 滨崎步演唱会高清| 公浮滔滔之手| 欢乐颂电视剧全集免费观看| 4大学生| 电视剧名校| 韩国年轻子1| kaera uehara| 《亲爱的》全集免费观看| 日语版九品芝麻官| 高清《战旗如画》电视剧| 终末的女武神12集完整版第二季| 凶猛的办公室| 男免费观看高清完整版电视剧| 诛仙2电影完整免费观看| 韩剧《为爱疯狂》| 3g手机电影| 电影《私人航空》在线观看| 湿濡的女人 电影| 马斯克笑称不用去劳改营了| 嗜血法医第一季| 小辣椒美国伦理| 浴火之路免费观看策驰影院| 赖汉的幸福指数 电视剧| 中文字Dl幕岳和女胥| 外出2014| 剑蝶电视剧全集| 甜美姐姐动漫1-2集 | 列兵大学生| 世界第一的初恋第二季| 游客在瓦屋山被落石砸中身亡| 指环王1:护戒使者免费| 电视剧富贵| 白峰电影在线观看| 地震局称银川进入地震窗口期| 《爱我几何》高清免费看 | 麻花传奇天美mv免费观看| 特种兵之火凤凰32集| 美国电影保罗2| 聊斋觅仙路| 亲爱的小孩 电视剧| 蛋蛋走乡村| 秘密花园里的花园| 爱的色放无删减版| 沧元图第二季番外篇| 播放_女律师的堕落_经典片_高清_K8经典网| 我的水蜜桃好软水好多| 保姆的特别待遇免费 | 我们一起摇太阳在线观看免费高清| 李碧华鬼魅系列:迷离夜| 大过年电视剧免费观看全集| 海上钢琴师电影| 恋之罪免费观看完整版高清| 问心电视剧免费观看| 牝教室| 霍元甲黄元申粤语| 年轻的儿媳妇字头范文| 3对1在线观看中文字幕| 瓢虫贝贝| 电视剧乡村名流| 战狼六欧美版在线观看| 《和讨厌的部长出差》电影| 天使多美丽| 带货女王:直播卖出一个亿全集免费| 电影《女子护卫队》在线观看免费| 带我离开歌词| 电影报道| 禁忌4年转一代最忌三种东西| 魔术快斗国语版全集| 薄冰电视剧免费观看| 365天今时之欲资源| 电影《安娜和父亲》在线看麦乐迪| 东北往事之黑道风云20年2部| 司机是大佬全集免费| 老色哥| 雷玛根大桥| 同在屋檐下电视剧全集在线观看| 在丈夫面前被别人欺负日语| 美国禁忌式家庭结局10| 新扎师姐| 五台山奇情| 电影《爱我几何》高清在线看| 河童之恋| 灭火宝贝完整免费高清满天星| 甄嬛传乐视| 电影《绿茵星妈》免费观看| 烈火金刚电视剧| 字圣传奇| 酒店1-45集全免费观看| 女子户卫队,满天星| 苹果完整版在线观看| 德川幕府电影| 高压监狱2免费完整版在线播放 | 发型屋网站| 越南丰满BBWBBW| 爱的妇产科| 助理2| 女士葬礼入殓视频| 白袜子俱乐部| 《急诊护士》法国版电影在线观看 | 蓝色隐身帽子韩国电影| 追龙在线观看| 《玉薄圃》| 奇领6080奇领影院奇领yy6080蓝天斗罗大陆杨戬寒门枭士 | 派对和谎言在线看| 驯服调教上司女社长| 乌云之上电视剧全集剧情| 插曲痛30分钟全集免费看| 唐老鸭和米老鼠全集| 情爱天空| 男子与女子免费高清电视剧| 写真片lcdv观看影院| 养女全集| 熊熊帮帮团| 米易县| 古惑仔之江湖新秩序| 《小欢喜2》免费观看| 酒店1-100集完整版| 天使的胆量:高中生| 妮可基德曼 大尺度| 加勒比海盗5 死无对证| 漂亮的妈妈中字开头10个字| 火遮眼谢苗电影完整版| 韩国售楼部小姐免费观看完整版| 多哈跳水世锦赛2024赛程 | 斗罗大陆免费全集| 奈曼旗| 在线播放国风按摩院 春宵一克值千金 第1集 - 高清资源 - 大鸟视频 | 恋爱先生免费观看全集| 爱他就去追| 《部长出差的日子》2| 我是你婶娘免费观看高清韩剧| 非常勿扰| 木下檩檩子电影免费观看普通话版| 我不知道的妻子的真相貌| 首付电视剧全集| 十年爱电影| 私人航空法国电影完整版在线观看 | 斯戴佛的妻子们| 《开始推理吧2》免费观看| 女超人麦乐迪无删| 速度与激情10普通话版| 客从何处来 易中天| 公之浮手中字60| 一仆二主电视剧 全集| 电影珍品| 女子学院姑娘们1983第一季| 小时代3:刺金时代 电影| 《女战狼4》免费999在线观看| 巴厘岛的故事电视剧| 赤子板《姐妹牙医》百度云| 禁室培欲3| 《催眠软件》动漫第一季 | 新有莱在线| 别打扰我读书电视剧结局免费观看 | 盛唐风流国语版在线观看| 南少林三十六房| 梦幻西游服战直播| 郑嘉颖最新电视剧| 紧身牛仔裤美女热舞| 佐佐木希av作品| 女版战狼10什么时候上映| 短剧《出鞘》全集播放| 江南1970| 电影《我要上学》| 国产未发育的学生洗澡电影| 和表姐同居免费观看| 大风杀电影在线观看完整版| 沈腾机器人电影叫什么| 落魄贵族琉璃动漫免费观看全集| 那场雨爱上你泰剧在线观看| xl司令第一季免费观看全集| 浪客剑心免费观看| 韩国火热的邻居| 环珠格格第一部| 隐身女侠的电影免费观看| 韩国朋友夫妇交换3| 朋友和妈妈| 韩国伦理电影大全五月天| 乡村爱情9在线观看| 庄河市| 辣椒教室片尾曲| 罗小黑战记40| 温暖的僵尸百度影音| 部长来做客| 庶妻捍夫| 电影小蓝第二部| 高校风云| 魔力宝贝监狱| 替身演员全集免费| 聊斋之奇情异恋| b13区高清| 三年成全免费高清观看资源| 张雪峰公司员工回应上四休三| 纸上谋杀| 亚当君挣扎吧第9集在线观看| 漂亮妈妈6巴字中字开头7个字| 大耳朵图图全集| 奥特曼大全动画片| 子夜归一共多少集| 苍月战士苍月免费观看| 锄奸电视剧| 何以为家电影| 汪涵怎么老成这样了| 法老荒史在线观看免费版高清| 四川频道| 《恋爱女子宿舍》| 废柴嫡女:逆天改命飒爆了短剧全集| 性的暴行在线观看| 电视剧妈祖| 电影《夺冠》| 经典杯子蛋糕日剧在线观看免费| 莫莉3特别的酒店免费| 长安的荔枝有电视剧吗| 风花雪月全集免费观看| 李采潭姨母的诱惑| 黑帮老大第三季结局| 梅花红桃电视剧免费观看完整版 | 尸蛊艳谭| 秘密花园免费版| 冲上云霄2土豆| 一代名相陈廷敬演员表| 朴亚珍《隐身帽》原版| 地狱洞电影完整版在线观看| 白仙儿动画搞笑| 日本大学生私密按摩在线播放| 仓井肉欲| 天地有情台湾电视剧| 韩国卖房子的女销售2| 母亲爱上儿子同学日本在线| 失足妇女什么意思| 傻猫大战三小强| 仙游县| 荷尔蒙6美国版| 风筝电视剧免费观看| 电视剧长沙保卫战全集在线观看| 天堂执法者第一季| 混血儿摇篮曲1973正版播放| 老舅1-27集免费看| 烛子的瓜| 《爸爸种子2》电影| 美丽高解像粤语全集| 母亲3在线观看完整版 百度| 连诗雅喜爱夜蒲| x的天使| 菅谷梨沙子快播| 变形金刚3国语版| 深圳都市频道| 放课后の优等生未增删有翻译| 英语老师不戴罩子让我捏一节课的 | 潘金莲荡秋千吃葡萄是谁演的| 特殊的温泉课HD中字| 迁西县委书记李富贵现状如何| 夏至未至豆瓣| 为我而眠的妹妹| 小货SAO边洗澡边CAO你动漫| 宫瀬里子| 私人家教1983版电影免费观看 | 笑功震武林快播| 渔民家姑娘2| 罗曼史 快播| 埃博拉前线电视剧免费观看 | 麦瑟尔夫人电影在线播放| 电影中国机长在线观看| 《overflower》| 3d如蒲团| 红高粱下载| 《姐妹牙医》完整版在线观看免费播放 | 黑白配高清国语免费观看教程| 生而为狗| 金基范段誉| 中字hd的丈夫的下属的成就与贡献| 一生一世在线观看免费版| 如意芳霏电视剧免费观看全集| 《美容院:特殊待遇》完整版 | 新人类《毒医肥尸》| 满清禁宫秘史下载| 一站到底清华北大| 暴躁少女完整版在线看| 詹伯奥特曼| 何赛飞获金鸡奖最佳女主角| 安娜女子监狱的电影| 欢迎来到实力至上主义教室| 中国远征军 下载| 电影《替夫还债3》| 《姐妹病毒》电影| 东京异种 电影| 罗丽星克莱尔电影在线观看| 蜡笔小新剧场版森巴入侵计划| 《绝对权力》在线观看| 《爱我几何》莫妮卡原版免费观看全集 | 苹果树下| 仙逆108集在线播放| 好想告诉你动漫| 善良的女同学中字| 唐人街探案2免费版在线观看| 蒙面超人rx粤语| 欧美版战狼9电影免费观看| 僵尸再翻生| 新闺蜜时代23| 双女任务电影免费观看完整版| 电视剧成长| 动漫解说一口气看完| 禁止的爱未删减版在线观看下载| 活死人军团| 海豚寄宿学园在线观看完整版 | 非你莫属泰剧在线观看| 《火花》电影| 护国战神:卸甲归田当奶爸全集免费| 爱你几何电影在线观看完整免费高清原声| 盛唐风流1电影完整版| 八年级下册英语单词领读| 烧饼皇后| 《初体验5》完整版| 动感之星小玲236集完整版免费观看下 | 时光正好免费观看全集| 罗丽星克莱尔性迷宫片长| 原纱央莉之重装| 我的泪珠儿电视剧| 念念相忘电视剧全集在线观看免费| 黑人大战俄罗斯妞| 李一桐免费观看全集| 姐妹免费观看国语电影动漫 | 洞房初夜| 《放羊的星星》电视剧| 不再联系mv| 韩国伦理片爱人| 高清谋杀的滋味| 男女生一起愁愁视频| 鬼泣动漫| 黄金时代电影| 芭比之神秘之门普通话免费观看| 公与浮1| 我和部长出差的日子在线观看免费| 我当你兄弟电影| 爱情是什么在线观看国语版全集| 恶役千金| 兔子先生在线观看高清完整版免费 | 一笑随歌电视剧免费观看高清| 最美逆行者电视剧| 商务旅行戴绿帽子在线观看| 电视剧《雪狼》完整版| 死神356| 日本少女恃殊按摩3| 再喊一声爹娘| 宴遇永安 电视剧 在线观看| 古墓丽影满天星免费看| 新哥哥电影完整版中文| 林一未来短剧免费观看| 我叫赵甲第第二季电视剧 | 电影《汤唯》在线观看国语| 午夜伦理小蜜桃| 我家女友可不止可爱呢| 谍影重重4高清完整版| 《驯服2》电影演员名单| 《需要爸爸播种美国》导演是谁 | 苏文茂相声| 名侦探柯南绯色的不在证明动漫| 致命弯道4电影| 闪亮的西瓜电视剧免费观看| xl司令| 小v日记| 怪医杜立德3| 《知否知否应是绿肥红瘦》电视剧| 日本维修工艳遇| 火凤凰29| 坏哥哥集百万部电影| 电影《时间静止器》免费观看全集 | 扫黄先锋 电视剧| 地狱尖兵2电影完整版| 几度菊花香| 花子vs倔强驱魔在线观看 | 暗算电视剧免费高清完整版在线观看| 相亲2下载| 酒店激战3-12集人生第一次 | 做aj的剧免费观看| 做aj的电视剧在线观看| 《满天星女狱警》| 高清《抗战》40集免费观看| 奇妙发型屋2在线观看免费中文版电视| 奶茶手帐怎么画| 别和陌生人跳舞全集| 孙佳慧VK| 私人航空在线看| 名侦探柯南702| 狂野式到轮式的转换技巧| 一双绣花鞋电影| 白嫖者电视剧在线观看免费| 电视剧后宫甄嬛传| 隐入尘烟免费观看完整| 株洲县| 日韩三级伦理修理工| 梅姨杀小孩过程| 我的舞台教学设计| 二十一世纪性格爱情指南第八集| 鸳鸯戏奶茶三姐妹| 欢乐颂4免费观看全集电视剧完整版| 戒杠小品完整版| 奇怪的美容院2| 莫言 丰乳肥臀 下载| 龙卷风优化| 疯狂牧场3| 金银1—5普通话国语| 电影竹夫人在线免费国语完整版| 鉴宝女王:古玩市场我称霸全集免费| 超能陆战队字幕| 台湾电影按摩店排毒500叫啥电影| 野花高清1在线观看免费| 湖北经视直播在线观看| 战狼6欧式少女版资源百度云| 军事当行为2017法国(啄木鸟)| 神女在线观看| 一误东风辞崔羽| 凯·帕克《甜心》| 韩国伦理需要爸爸的种子| 人民万岁电影| 3d极乐宝鉴| 泰剧美人鱼| 《欢乐颂》2免费观看| 致命录像带:万圣节| 爸爸的种子伦理剧| 离人心上电视剧免费观看全集| 土豆网电视剧情非情| 战狼9欧式少女中文版| 玉城麻衣| 乡村爱情8免费完整版电视剧全集| 甜心在线观看免费高清| 韩国电影四个已婚妇女去按摩 | 高清《名欲场》结局| 日韩激情小说在线观看 | 渭源县| 姜子牙在线| 惊奇4潮男| 《妻子10》在线观看全集| 美国电影《需要爸爸播种》在线播放| 中间人泰剧在线观看免费完整版 | 最新吃瓜群众在线吃瓜| 普门品全文念诵及回向全文| 连州市| 女超人麦乐迪A片未删减版免费观看| 被治服的爸爸| 夫妇联欢会回不去的夜晚9集| 法国塔日酒店完整版| 来自星星的你国语| 更衣服人偶坠入爱河在线 | 青柠剧情电影免费观看全集| 《义子侵犯》寺岛志保| 学渣学霸:高考状元全集免费| 内衣公司动漫第4集| 青梅竹马:两小无猜超甜短剧全集| 战狼9加拿大版高清版 | 女巫1955满天星| 黄圣依小儿子庆生| 哆啦a梦国语版高清在线观看| 鹰隼大队| 《需要爸爸播种子》电影免费在线观看,高清完整版美国倫理片_努努影院 | 德国战车dj| 《放飞旅行团》| 北京四少| 哇嘎电影观看免费网站| 我们的新家免费观看完整版| 灌篮高手国语版| 爱在空气中第9集| 千金与佣人电影观看里的揉大白兔 | 相叒游戏| 玫瑰的故事在线免费| 韩剧《婚后的生活》| 《千金赤子板栗》完整版百度网盘 | 莫妮卡《爱我几何》未简版电影免费| 小狐狸发明记主题曲| 齐鲁频道| 斯巴达第四免费观看全集高清| 樱兰高校男公关真人版| 色降ii万里驱魔| 家有喜事1992国语| 年轻的小廋子| 漂亮的保姆韩国完整版观看| 木行猜成语| 想要爸爸的种子| 暗格里的秘密免费观看| 香烟爱上火柴广场舞| 你好,爱美丽| 维修电工的艳遇在线观看| 百练成仙| 武林外传电视剧| 黄山市| 卖房子的女销售3在线播放| 《二进制恋爱》免费观看| 罗马帝国艳情史 下载| 1985日本电影《黑色的眼泪》在哪里能| 我的好姐姐们| 黑糖玛奇朵电视剧| 电视剧《薄冰》免费观看| 维修师傅艳遇理论电影| 景区再度上演人从众| 神探夏洛克 第三季| 《品味人生》在线观看免费| 好姑娘国语高清观看| 为什么黛玉是裸死| 哈马斯与法塔赫在北京磋商| 《妽妽的丰满大胸》hd| 过火粤语| 小胖俞涛回应九转大肠梗| 朋友的女朋友中语版在看| 欧少女16集| 太子妃她是隐藏大佬短剧全集| 蜜雪冰城加盟 官网电话| 莫妮卡爱我几何原版免费观看| 夺冠在线观看免费完整版| 薛姨妈hi版红楼梦免费观看| 史前巨鳄3| 皇家奶娘在线观看,美丽的姑娘观看在| 围城之九龙城寨免费观看| 美艳的房东太与阿宾91| 钢铁魔女无删减在线观看第1集| 《蛇王波后》完整版| GQ盛典2023直播回放| 啄木鸟《女拳击手2满天星版》| 女婿难当| 韩国美人图| 石泉县| 花与蛇牙医免费版全集| 小马宝莉第二季| 《狂飙》免费策驰影院| 战狼6高清国语免费观看影视大全下载什么借钱平台好的 | 灾女变福妻:全家都宠我全集免费| 看了又看第五部| 美艳的房东太与阿宾| 美国式禁忌1百度影音| 电影婚戒| 玩具总动员1| 菠萝蜜电影免费观看| 两个人日本免费完整版高清中文| 追鱼电视剧| 史泰龙电影国语| 法国空姐2008满天星法版:星辉照耀下| 高安子君广场舞阿哥阿妹| 公主摊牌:我是隐藏大佬短剧全集| 电影《空姐4》完整版| 1995版人猿泰山意大利版本| 美国禁忌之恋| 迷你福利站| 人猿泰山主演1995版| 命运交响曲电视剧全集| 贞洁美妇沦陷| 唐朝禁宫秘史在线观看| 美国伦理《生殖按摩》电影| 瑞幸咖啡线下点单存价差| 梦回青河| 危险追逃电视剧| 歼灭天际1-40集免费观看西瓜视频| 嫂子的诱惑3| 后宫甄嬛传3| 黄圣依 乳晕门| 黑白配免费观看全集高清| 银娇 完整版| 上海流浪华姐图片| 淄博烧烤小店每日卖上万烤串| 《女警察坠落2》| 生活有点甜电视剧| 爱情男女免费观看全集完整版电影| 流光飞舞粤语| 《和讨厌的部长出差| 港湾01| 怀来至北京跨省公交停运| 高三女孩热血发言燃爆全场| 做aj的免费大全电视| 九龙城寨2| 国乒女单无缘亚锦赛四强| 僵尸道长粤语| 坎贝奇的品味人生观看| 女超人满天星版麦乐迪第一季| 十大奇冤高清| 女朋友高清在线观看免费韩国| 妈妈看上儿子的同学韩剧叫什么| 《金牌销售的秘密1》免费全集| 极盗行动免费完整版在线观看中文版| 兵王电视剧| 南江县| 大江大河3第53集免费观看| 欲望中的女人在线观看无删减| 盗墓笔记超级季播剧| 冰冷热带鱼 手机在线观看| 三级片爸爸帮我播种子| 韩剧《结婚前夜》| 阿甘正传 电影| 嘻哈斗牛犬| 电影姐妹牙医完整版 在线看 | 中国达人秀卓君稻草人| 金刚狼百度影音| 瓜达卢佩的玫瑰女邻居完整版 | 糖果盒子| 销售的销售的秘密6HD中字| 绝世狂萧之九天之外| 张艺兴诉b站侵权案将开庭| 虎胆龙威3国语高清| 男女在一起愁愁愁免费观看全集| 小马宝莉动画片全集免费中文版| 张莜雨人体艺术照| 不完美的受害人| 横峰县|