www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 公眾號精選 > 嵌入式微處理器
[導(dǎo)讀]  本文講解的是飛思卡爾軟件開發(fā)C語言編碼規(guī)范。來自于痞子衡嵌入式公眾號,下面是編碼規(guī)范原文: 1.引言   制定此編碼風(fēng)格指導(dǎo)手冊的目的是為了使按此規(guī)范編寫出的C/C++代碼極易被閱讀和理解。 2.與其他編碼風(fēng)格對比 3.基本排版格式 需要以4個空格為單位

  本文講解的是飛思卡爾軟件開發(fā)C語言編碼規(guī)范。來自于痞子衡嵌入式公眾號,下面是編碼規(guī)范原文:

1.引言

  制定此編碼風(fēng)格指導(dǎo)手冊的目的是為了使按此規(guī)范編寫出的C/C++代碼極易被閱讀和理解。

2.與其他編碼風(fēng)格對比

3.基本排版格式

  • 需要以4個空格為單位的縮進(jìn).

  • 堅決不用Tab鍵,要用空格鍵.

  • 所有文件結(jié)尾必須空一行.

  • 文本文件必須用UTF-8編碼.

  • 每一行不能超過100個字符.

4.文檔與注釋

  • 恰當(dāng)?shù)剡M(jìn)行代碼注釋.

  • 關(guān)于注釋長度沒有具體限制,只要能提供幫助,就盡可能地注釋.

  • 注釋應(yīng)該解釋代碼為什么要這么做,而不是如何去做(代碼本身已經(jīng)表明了如何去做).

  • 選擇Doxygen文檔系統(tǒng)來完成注釋,除了在函數(shù)中的注釋之外(因為Doxygen不適用于個別代碼行的注釋),Doxygen也不適用于匯編.

5.標(biāo)準(zhǔn)數(shù)據(jù)類型

  • 僅使用C99標(biāo)準(zhǔn)給出的整型(定義見stdint.h文件),如uint32_t,int16_t等,不要typedef自己的整型類型,如u8,int_32,WORD等.

  • 使用char 或wchar_t來表示字符串,但二進(jìn)制緩存仍應(yīng)使用uint8_t

  • 僅使用C99標(biāo)準(zhǔn)給出的bool型(定義見stdbool.h文件)來表示布爾變量,true和false表示其值. (ps: windows平臺下編譯時需自行定義,因為windows下不包含stdbool.h文件)

6.標(biāo)識符的命名

  以下是C/C++下變量、函數(shù)、typedef、宏命名的基本規(guī)則,命名規(guī)則可以接受細(xì)微改動,但要保證在同一模塊中的一致性:

  • 全局函數(shù)名:全小寫,單詞用下劃線隔開
    如:i2c_receive_data()

  • 普通變量名:Camel命名法
    如:thisIsMyVariable

  • 結(jié)構(gòu)體名和類名:Pascal命名法
    如:BigBoxOfTools

  • 類成員函數(shù)名:Camel命名法
    如:initialLongProcess()

  • 用typedef重命名:全小寫,單詞用下劃線隔開,加_t后綴
    如:big_box_of_tools_t

  • 用宏命名:單詞全大寫(僅在宏中使用,且必須使用)

  描述性強(qiáng)的,可讀性強(qiáng)的變量名非常重要:

  • 大部分單詞都不應(yīng)該縮寫,比如應(yīng)用block而不是blk,應(yīng)用count而不是cnt.
    一些流行的縮寫還是允許的,如init或config

  • 完全可以接受較長的,描述性的變量名

  • 布爾型變量可以使用”is”,”did”等前綴,這會清晰地表明其是一個布爾型

  • 變量名應(yīng)該可以表達(dá)其目的,但堅決反對匈牙利命名(加數(shù)據(jù)類型前綴)
    正確: temporaryParameters, startBlock, nodeKey, isAlarmEnabled
    錯誤:u32BlkNum, bEnabled

  有時候為了表明范圍和目的,有些變量命名是可以加前綴和后綴的:

  • 局部變量:無需前綴

  • 全局變量:加g_前綴

  • 靜態(tài)變量:加s_前綴

  • 類成員變量:加m_前綴

  • 常量:加k前綴
    1):如kUnconstrained, kFirstPage, kMaxBufferBytes
    2):k前綴使常量很容易被識別

  • typedef型變量:加_t后綴

  備注:切記不要用匈牙利命名法,因為其會導(dǎo)致變量名難于閱讀,且類型前綴常常會與變量真正類型不同步,微軟曾是此命名法的擁躉,但其已意識到此命名法的缺陷,目前正在逐漸脫離此方法。

7.可調(diào)試性

  • 一系列的整型常量應(yīng)該用枚舉來表示,而不是用宏來定義
    1):在調(diào)試時,常量被顯示為真實的標(biāo)識,而不是數(shù)字
    2):便于常量的邏輯分組

  • 大部分情況下,使用內(nèi)聯(lián)函數(shù)來代替宏功能
    1):在調(diào)試中,內(nèi)聯(lián)函數(shù)可以被禁用,故可以跳過
    2):內(nèi)聯(lián)函數(shù)參數(shù)有類型,而宏中參數(shù)不可以有類型
    3):這個規(guī)則僅適用于當(dāng)用宏來表示一段代碼時,不適用于在表達(dá)式中表示某部分的宏

8. C99標(biāo)準(zhǔn)

  • 需要使用C99
    C99被允許使能C++或C89語義內(nèi)聯(lián)

  • 在盡量靠近變量被使用的地方來聲明變量,而不是一律在函數(shù)頂部聲明
    1):這可以很容易地找到變量的定義
    2):可以方便編譯器進(jìn)行優(yōu)化

  • 單行注釋應(yīng)使用//而不是/* …*/
    1):大部分人認(rèn)為//式注釋方便閱讀
    2):免去注釋嵌套的煩惱

  • 多行注釋/* …*/可以被用作大段確定的內(nèi)容注釋,就像Doxygen注釋頭一樣,以使得被注釋的內(nèi)容突出。

9.內(nèi)聯(lián)功能

  頭文件中,內(nèi)聯(lián)功能啟用應(yīng)用static inline來完成

10. C/C++通用性

  頭文件中的公用函數(shù)原型必須包含在下列語句中

#if defined(__cplusplus)
extern "C" {
#endif // __cplusplus

// 此處放函數(shù)原型

#if defined(__cplusplus)
}
#endif // __cplusplus

  C中一般都用typedef來重命名結(jié)構(gòu)體和枚舉數(shù)據(jù)類型,不要提及原始的結(jié)構(gòu)體或枚舉型名
  C++中,則不需用typedef來重命名,直接用原始的結(jié)構(gòu)體或枚舉型名;但是如果代碼被C/C++共享,則應(yīng)遵從C風(fēng)格
  對于被用在C++中的函數(shù)(比如類成員)而言,如果函數(shù)不帶任何參數(shù),則不需要一個專門的void參數(shù)來表明,而在C中這是需要的

11.花括號的使用

  花括號的使用雖重要性不高,但經(jīng)常起爭議

  • 通常情況下,花括號應(yīng)該單獨起一行,不需要額外的縮進(jìn)

  • 有時為了保持可讀性,可以不遵守上一規(guī)則

  • 花括號使用的關(guān)鍵點在于不要將代碼湊在一起,從而使得代碼比較難閱讀;也不要因為具體格式的限定,從而打破視覺流程

  使用規(guī)則可以接受細(xì)微改動,但要保證在同一模塊中的一致性,以及易于閱讀

結(jié)構(gòu)體和類示例:
struct Monkey
{

int x;
};

typedef struct MonkeyTwo {
int y;
} monkey_two_t;

class Cube
{

public:
Cube(int theSize);

private:
int m_size;
};
枚舉示例:
enum _my_enum
{
kValueOne = 1,
kValueTwo = 2
};

typedef enum _another {
kAnotherOne = 10,
kAnotherTwo = 20
} another_t;
函數(shù)示例:
void foo()
{

printf("hi\n");
}
If語句示例:
if (baz >= kMaximumBaz)
{
baz = kMaximumBaz;
}
else if (!ready)
{
makeItReady();
}
else
{
abort();
}
For語句示例:
for (i=0; i < 10; ++i)
{
printf("%d", i);
}
While語句示例:
while (!done)
{
doSomething();
}
Do-while語句示例:
do {
doSomething();
} while (!done);
Switch語句示例:
switch (value)
{
case 0:
x += 1;
break;

case 1:
{
int y;
calculateIt(&y);
break;
}

default:
return;
}
命名空間示例:
namespace fsl
{
// Don't indent namespace contents!
}
Try-catch語句示例:
try
{
}
catch (std::exception & e)
{
}
catch (...)
{
}

12. 關(guān)于MISRA-C規(guī)范

  代碼風(fēng)格基本遵照MISRA-C:20xx規(guī)范,但除了以下例外(這些例外是基于MISRA-C:2004規(guī)范的)

  至此,飛思卡爾軟件開發(fā)C語言編碼規(guī)范痞子衡便介紹完畢了,掌聲在哪里~~~

本文授權(quán)轉(zhuǎn)載自公眾號“痞子衡嵌入式”,作者痞子衡

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

嵌入式ARM

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉