作者:架構(gòu)師李肯
前言
RT-Thread 編程風(fēng)格
1.目錄名稱
2.文件名稱
3.頭文件定義
C 語(yǔ)言頭文件為了避免多次重復(fù)包含,需要定義一個(gè)符號(hào)。這個(gè)符號(hào)的定義形式請(qǐng)采用如下的風(fēng)格:
1#ifndef__FILE_H__
2#define__FILE_H__
3/*headerfilecontent*/
4#endif
即定義的符號(hào)兩側(cè)采用 “__” 以避免重名,另外也可以根據(jù)文件名中是否包含多個(gè)詞語(yǔ)而采用 “_” 連接起來(lái)。
4.文件頭注釋
在每個(gè)源文件文件頭上,應(yīng)該包括相應(yīng)的版權(quán)信息,Change Log 記錄:
1/*
2*Copyright(c)2006-2020,RT-ThreadDevelopmentTeam
3*
4*SPDX-License-Identifier:Apache-2.0
5*
6*ChangeLogs:
7*DateAuthorNotes
8*2006-03-18Bernardthefirstversion
9*2006-04-26BernardaddsemaphoreAPIs
10*/
5.結(jié)構(gòu)體定義
結(jié)構(gòu)體名稱請(qǐng)使用小寫英文名的形式,單詞與單詞之間采用 “_” 連接,例如:
1structrt_list_node
2{
3structrt_list_node*next;
4structrt_list_node*prev;
5};
1typedefstructrt_list_nodert_list_t;
1typedefstructrt_timer*rt_timer_t;
6.宏定義
1#defineRT_TRUE1
7.函數(shù)名稱、聲明
1rt_thread_trt_thread_self(void);
1/*IPCobjectinit*/
2staticrt_err_t_ipc_object_init()
3
4/*UARTdriverops*/
5staticrt_err_t_uart_configure()
6staticrt_err_t_uart_control()
1intrt_hw_uart_init(void)
2intrt_hw_spi_init(void)
8.注釋編寫
1/*你的英文注釋*/
注釋模版請(qǐng)參見(jiàn):rt-thread/src/ipc.c 源碼文件,英文注釋請(qǐng)參考使用 grammarly 以及谷歌翻譯。
1/**
2*@briefThefunctionwillinitializeastaticeventobject.
3*
4*@noteForthestaticeventobject,itsmemoryspaceisallocatedbythecompilerduringcompiling,
5*andshallplacedontheread-writedatasegmentorontheuninitializeddatasegment.
6*Bycontrast,thert_event_create()functionwillallocatememoryspaceautomatically
7*andinitializetheevent.
8*
9*@seert_event_create()
10*
11*@parameventisapointertotheeventtoinitialize.Itisassumedthatstoragefortheevent
12*willbeallocatedinyourapplication.
13*
14*@paramnameisapointertothenamethatgiventotheevent.
15*
16*@paramvalueistheinitialvaluefortheevent.
17*Ifwanttoshareresources,youshouldinitializethevalueasthenumberofavailableresources.
18*Ifwanttosignaltheoccurrenceofanevent,youshouldinitializethevalueas0.
19*
20*@paramflagistheeventflag,whichdeterminesthequeuingwayofhowmultiplethreadswait
21*whentheeventisnotavailable.
22*TheeventflagcanbeONEofthefollowingvalues:
23*
24*RT_IPC_FLAG_PRIOThependingthreadswillqueueinorderofpriority.
25*
26*RT_IPC_FLAG_FIFOThependingthreadswillqueueinthefirst-in-first-outmethod
27*(alsoknownasfirst-come-first-served(FCFS)schedulingstrategy).
28*
29*NOTE:RT_IPC_FLAG_FIFOisanon-real-timeschedulingmode.Itisstronglyrecommendedto
30*useRT_IPC_FLAG_PRIOtoensurethethreadisreal-timeUNLESSyourapplicationsconcernabout
31*thefirst-in-first-outprinciple,andyouclearlyunderstandthatallthreadsinvolvedin
32*thiseventwillbecomenon-real-timethreads.
33*
34*@returnReturntheoperationstatus.WhenthereturnvalueisRT_EOK,theinitializationissuccessful.
35*Ifthereturnvalueisanyothervalues,itrepresentstheinitializationfailed.
36*
37*@warningThisfunctioncanONLYbecalledfromthreads.
38*/
39rt_err_trt_event_init(rt_event_tevent,constchar*name,rt_uint8_tflag)
40{
41...
42}
9.縮進(jìn)及分行
1if(condition)
2{
3/*others*/
4}
1switch(value)
2{
3casevalue1:
4break;
5}
10.大括號(hào)與空格
1if(condition)
2{
3/*others*/
4}
1if(x<=?y)
2{
3/*others*/
4}
5
6for(index=0;index7{
8/*others*/
9}
1if(x<=?y?)
2{
3/*other*/
4}
11.trace、log信息
12.函數(shù)
13.對(duì)象
1structrt_timer
2{
3structrt_objectparent;
4/*otherfields*/
5};
6typedefstructrt_timer*rt_timer_t;
1rt_timer_trt_timer_create(constchar*name,
2void(*timeout)(void*parameter),
3void*parameter,
4rt_tick_ttime,rt_uint8_tflag);
5rt_err_trt_timer_delete(rt_timer_ttimer);
6rt_err_trt_timer_start(rt_timer_ttimer);
7rt_err_trt_timer_stop(rt_timer_ttimer);
14.格式化代碼
使用 astyle 格式化
1--style=allman
2--indent=spaces=4
3--indent-preproc-block
4--pad-oper
5--pad-header
6--unpad-paren
7--suffix=none
8--align-pointer=name
9--lineend=linux
10--convert-tabs
11--verbose
使用 formatting 格式化
將源文件編碼統(tǒng)一為 UTF-8
將 TAB 鍵替換為 4 空格
將每行末尾多余的空格刪除,并統(tǒng)一換行符為 ‘ ’
RT-Thread開(kāi)發(fā)者大會(huì)
我們將聯(lián)合重量級(jí)合作伙伴,圍繞AIoT的發(fā)展、產(chǎn)業(yè)技術(shù)趨勢(shì),聚焦控制、連接、行業(yè)應(yīng)用開(kāi)發(fā),通過(guò)主題演講、技術(shù)分享、應(yīng)用演示等環(huán)節(jié),助力開(kāi)發(fā)者探索萬(wàn)物智能的世界,期待與大家一起相聚線上直播間!
本次將在大會(huì)當(dāng)天在直播間宣布中獎(jiǎng)名單
更多獎(jiǎng)品即將來(lái)襲...
你可以添加微信17775982065為好友,注明:公司+姓名,拉進(jìn)RT-Thread官方微信交流群!
愛(ài)我就給我點(diǎn)在看
點(diǎn)擊閱讀原文進(jìn)入報(bào)名
原文標(biāo)題:RT-Thread 編程風(fēng)格
文章出處:【微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
RT-Thread
+關(guān)注
關(guān)注
31文章
1285瀏覽量
40079
原文標(biāo)題:RT-Thread 編程風(fēng)格
文章出處:【微信號(hào):RTThread,微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論