国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

電子工程網

標題: 知名半導體MCU大廠軟件開發C代碼規范 [打印本頁]

作者: 嵌入式人生17    時間: 2020-5-6 14:30
標題: 知名半導體MCU大廠軟件開發C代碼規范
知名半導體MCU大廠軟件開發C代碼規范
  本文講解的是飛思卡爾軟件開發C語言編碼規范。下面是編碼規范原文:
1.引言
  制定此編碼風格指導手冊的目的是為了使按此規范編寫出的C/C++代碼極易被閱讀和理解。
2.與其他編碼風格對比
file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml3064\wps5.png
3.基本排版格式
·
需要以4個空格為單位的縮進.
·
·
堅決不用Tab鍵,要用空格鍵.
·
·
所有文件結尾必須空一行.
·
·
文本文件必須用UTF-8編碼.
·
·
每一行不能超過100個字符.
·
4.文檔與注釋
·
恰當地進行代碼注釋.
·
·
關于注釋長度沒有具體限制,只要能提供幫助,就盡可能地注釋.
·
·
注釋應該解釋代碼為什么要這么做,而不是如何去做(代碼本身已經表明了如何去做).
·
·
選擇Doxygen文檔系統來完成注釋,除了在函數中的注釋之外(因為Doxygen不適用于個別代碼行的注釋),Doxygen也不適用于匯編.
·
5.標準數據類型
·
僅使用C99標準給出的整型(定義見stdint.h文件),如uint32_t,int16_t等,不要typedef自己的整型類型,如u8,int_32,WORD.
·
·
使用char wchar_t來表示字符串,但二進制緩存仍應使用uint8_t
·
·
僅使用C99標準給出的bool(定義見stdbool.h文件)來表示布爾變量,truefalse表示其值. ps: windows平臺下編譯時需自行定義,因為windows下不包含stdbool.h文件)
·
6.標識符的命名
  以下是C/C++下變量、函數、typedef、宏命名的基本規則,命名規則可以接受細微改動,但要保證在同一模塊中的一致性:
·
全局函數名:全小寫,單詞用下劃線隔開
如:i2c_receive_data()
·
·
普通變量名:Camel命名法
如:thisIsMyVariable
·
·
結構體名和類名:Pascal命名法
如:BigBoxOfTools
·
·
類成員函數名:Camel命名法
如:initialLongProcess()
·
·
typedef重命名:全小寫,單詞用下劃線隔開,加_t后綴
如:big_box_of_tools_t
·
·
用宏命名:單詞全大寫(僅在宏中使用,且必須使用)
·
  描述性強的,可讀性強的變量名非常重要:
·
大部分單詞都不應該縮寫,比如應用block而不是blk,應用count而不是cnt.
一些流行的縮寫還是允許的,如initconfig
·
·
完全可以接受較長的,描述性的變量名
·
·
布爾型變量可以使用”is”,”did”等前綴,這會清晰地表明其是一個布爾型
·
·
變量名應該可以表達其目的,但堅決反對匈牙利命名(加數據類型前綴)
正確: temporaryParameters, startBlock, nodeKey, isAlarmEnabled
錯誤:u32BlkNum, bEnabled
·
  有時候為了表明范圍和目的,有些變量命名是可以加前綴和后綴的:
·
局部變量:無需前綴
·
·
全局變量:加g_前綴
·
·
靜態變量:加s_前綴
·
·
類成員變量:加m_前綴
·
·
常量:加k前綴
1):如kUnconstrained, kFirstPage, kMaxBufferBytes
2)k前綴使常量很容易被識別
·
·
typedef型變量:加_t后綴
·
  備注:切記不要用匈牙利命名法,因為其會導致變量名難于閱讀,且類型前綴常常會與變量真正類型不同步,微軟曾是此命名法的擁躉,但其已意識到此命名法的缺陷,目前正在逐漸脫離此方法。
7.可調試性
·
一系列的整型常量應該用枚舉來表示,而不是用宏來定義
1):在調試時,常量被顯示為真實的標識,而不是數字
2):便于常量的邏輯分組
·
·
大部分情況下,使用內聯函數來代替宏功能
1):在調試中,內聯函數可以被禁用,故可以跳過
2):內聯函數參數有類型,而宏中參數不可以有類型
3):這個規則僅適用于當用宏來表示一段代碼時,不適用于在表達式中表示某部分的宏
·
8. C99標準
·
需要使用C99
C99被允許使能C++C89語義內聯
·
·
在盡量靠近變量被使用的地方來聲明變量,而不是一律在函數頂部聲明
1):這可以很容易地找到變量的定義
2):可以方便編譯器進行優化
·
·
單行注釋應使用//而不是/* …*/
1):大部分人認為//式注釋方便閱讀
2):免去注釋嵌套的煩惱
·
·
多行注釋/* …*/可以被用作大段確定的內容注釋,就像Doxygen注釋頭一樣,以使得被注釋的內容突出。
·
9.內聯功能
  頭文件中,內聯功能啟用應用static inline來完成
10. C/C++通用性
  頭文件中的公用函數原型必須包含在下列語句中
#if defined(__cplusplus)
extern "C" {
#endif // __cplusplus

// 此處放函數原型

#if defined(__cplusplus)
}
#endif // __cplusplus
  C中一般都用typedef來重命名結構體和枚舉數據類型,不要提及原始的結構體或枚舉型名
  C++中,則不需用typedef來重命名,直接用原始的結構體或枚舉型名;但是如果代碼被C/C++共享,則應遵從C風格
  對于被用在C++中的函數(比如類成員)而言,如果函數不帶任何參數,則不需要一個專門的void參數來表明,而在C中這是需要的
11.花括號的使用
  花括號的使用雖重要性不高,但經常起爭議
·
通常情況下,花括號應該單獨起一行,不需要額外的縮進
·
·
有時為了保持可讀性,可以不遵守上一規則
·
·
花括號使用的關鍵點在于不要將代碼湊在一起,從而使得代碼比較難閱讀;也不要因為具體格式的限定,從而打破視覺流程
·
  使用規則可以接受細微改動,但要保證在同一模塊中的一致性,以及易于閱讀
結構體和類示例:
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;
函數示例:
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. 關于MISRA-C規范
  代碼風格基本遵照MISRA-C:20xx規范,但除了以下例外(這些例外是基于MISRA-C:2004規范的)
file:///C:\Users\Administrator.WIN-STED6B9V5UI\AppData\Local\Temp\ksohtml3064\wps6.png
  至此,飛思卡爾軟件開發C語言編碼規范痞子衡便介紹完畢了,掌聲在哪里~~~






歡迎光臨 電子工程網 (http://m.qingdxww.cn/) Powered by Discuz! X3.4
主站蜘蛛池模板: 色席丝| 一区二区三区视频观看 | 日韩国产在线观看 | 欧洲色综合 | 日韩综合在线观看 | 亚洲成在人天堂在线 | 国产一区二区三区欧美精品 | 精子网久久国产精品 | 亚洲欧美日韩在线观看播放 | 国产v片在线播放免费观 | 日本aaa大片 | 国产精品亚洲综合一区在线观看 | 中国大陆高清aⅴ毛片 | 欧美黑人一区 | 久久久毛片免费全部播放 | 狠狠色丁香久久综合网 | 日本色高清 | 国产精品一区二 | 毛片免费全部完整播放 | 国产成人毛片亚洲精品不卡 | 国内精品一区视频在线播放 | 国内精品久久久久影院免费 | 天天插视频 | 亚州激情视频 | 国产偷v国产偷v亚洲高清 | 午夜网站在线播放 | 在线视频这里只有精品 | 岛国免费v片在线播放 | 四虎影视永久免费观看地址 | 国产精品成人久久久久久久 | 日韩在线视频免费 | 色婷婷一区二区三区四区成人网 | 欧美在线一区二区三区精品 | 欧美日韩一区二区三区在线观看 | 国产一区二区在免费观看 | www.91在线| 日本在线播放 | 美女国产在线观看免费观看 | 四虎影视成人永久在线观看 | 成人手机视频在线观看 | 香蕉视频在线免费 |