Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
RT-Thread的书写格式能否美观点。
发布于 2015-04-27 19:56:10 浏览:3965
订阅该版
最近学操作系统,浏览了几个系统的原代码,感觉RT-Thread的书写格式有点乱, 虽说不影响性能但阅读的时候看着不舒服。个人感觉好的代码不但要内在美, 外表也应该让人看着舒心。 RT-Thread的书写格式 ``` #include
#include
static rt_tick_t rt_tick = 0; extern void rt_timer_check(void); /** * This function will init system tick and set it to zero. * @ingroup SystemInit * * @deprecated since 1.1.0, this function does not need to be invoked * in the system initialization. */ void rt_system_tick_init(void) { } /** * @addtogroup Clock */ /*@{*/ /** * This function will return current tick from operating system startup * * @return current tick */ rt_tick_t rt_tick_get(void) { /* return the global tick */ return rt_tick; } RTM_EXPORT(rt_tick_get); /** * This function will set current tick */ void rt_tick_set(rt_tick_t tick) { rt_base_t level; level = rt_hw_interrupt_disable(); rt_tick = tick; rt_hw_interrupt_enable(level); } /** * This function will notify kernel there is one tick passed. Normally, * this function is invoked by clock ISR. */ void rt_tick_increase(void) { struct rt_thread *thread; /* increase the global tick */ ++ rt_tick; /* check time slice */ thread = rt_thread_self(); -- thread->remaining_tick; if (thread->remaining_tick == 0) { /* change to initialized tick */ thread->remaining_tick = thread->init_tick; /* yield */ rt_thread_yield(); } /* check timer */ rt_timer_check(); } /** * This function will calculate the tick from millisecond. * * @param ms the specified millisecond * * @return the calculated tick */ rt_tick_t rt_tick_from_millisecond(rt_uint32_t ms) { /* return the calculated tick */ return (RT_TICK_PER_SECOND * ms + 999) / 1000; } RTM_EXPORT(rt_tick_from_millisecond); /*@}*/ ``` Trochili的代码书写格式,*有点错位。 ``` /************************************************************************************************* * Trochili RTOS Kernel * * Copyright(C) 2012,2013,2014 LIUXUMING * * www.trochili.com * *************************************************************************************************/ #include "trochili.h" /************************************************************************************************* * 功能:设置线程属性 * * 参数:(1) pThread 线程结构地址 * * (2) property 线程属性数值 * * 返回:无 * * 说明: * *************************************************************************************************/ void TclSetThreadProperty(TThread* pThread, TProperty property) { TCL_ASSERT((pThread != (TThread*)0), ""); property &= THREAD_AUTHORITY_ALL; xThreadSetProperty(pThread, property); } /************************************************************************************************* * 功能:获得线程属性 * * 参数:(1) pThread 线程结构地址 * * (2) property 线程属性变量指针 * * 返回:无 * * 说明: * *************************************************************************************************/ void TclGetThreadProperty(TThread* pThread, TProperty* pProperty) { TCL_ASSERT((pThread != (TThread*)0), ""); TCL_ASSERT((pProperty != (TProperty*)0), ""); xThreadGetProperty(pThread, pProperty); } /************************************************************************************************* * 功能:内核启动API * * 参数:无 * * 返回:无 * * 说明:这是内核的启动函数 * *************************************************************************************************/ void TclStartKernel(void) { xKernelStart(); } /************************************************************************************************* * 功能:设置用户入口函数API * * 参数:(1) pEntry 用户初始入口函数 * * 返回:无 * * 说明: * *************************************************************************************************/ void TclSetUserEntry(TUserMainEntry pEntry) { TCL_ASSERT((pEntry != (TUserMainEntry)0), ""); xKernelSetUserEntry(pEntry); } /************************************************************************************************* * 功能:设置处理器初始化函数API * * 参数:(1) pEntry 处理器初始入口函数 * * 返回:无 * * 说明: * *************************************************************************************************/ void TclSetCpuEntry(TCpuSetupEntry pEntry) { TCL_ASSERT((pEntry != (TCpuSetupEntry)0), ""); xKernelSetCpuEntry(pEntry); } /************************************************************************************************* * 功能:设置板级初始化函数API * * 参数:(1) pEntry 板极初始入口函数 * * 返回:无 * * 说明: * *************************************************************************************************/ void TclSetBoardEntry(TBoardSetupEntry pEntry) { TCL_ASSERT((pEntry != (TBoardSetupEntry)0), ""); xKernelSetBoardEntry(pEntry); } /************************************************************************************************* * 功能:设置板级调试打印函数API * * 参数:(1) pRoutine 字符串打印函数 * * 返回:无 * * 说明: * *************************************************************************************************/ void TclSetTraceRoutine(TTraceRoutine pRoutine) { TCL_ASSERT((pRoutine != (TTraceRoutine)0), ""); xKernelSetTraceRoutine(pRoutine); } #if ((TCL_HOOKS_ENABLE)&&(TCL_IDLE_HOOK_ENABLE)) /************************************************************************************************* * 功能:设置IDEL线程Hook函数 * * 参数:(1) pEntry Idle线程的HOOK函数 * * 返回:无 * * 说明: * *************************************************************************************************/ void TclSetIdleHookEntry(TIdleHookEntry pEntry) { TCL_ASSERT((pEntry != (TIdleHookEntry)0), ""); xKernelSetIdelHookEntry(pEntry); } /************************************************************************************************* * 功能:清除IDEL线程Hook函数 * * 参数:无 * * 返回:无 * * 说明: * *************************************************************************************************/ void TclCleanIdleHookEntry(void) { xKernelCleanIdelHookEntry(); } #endif /************************************************************************************************* * 功能:设置中断向量函数 * * 参数:(1) vector 中断向量编号 * * (2) property 中断向量描述符属性 * * (3) pISR ISR处理函数 * * (4) pDsr ISR处理函数 * * (5) devid 挂接在中断向量上的设备ID * * (6) data 应用提供的回调数据 * * 返回:无 * * 说明: * *************************************************************************************************/ void TclSetIntVector(TVector vector, TProperty property, TISR pISR, TThread* pDsr, TWord data) { TCL_ASSERT((vector < TCL_INT_VECTOR_NR), ""); TCL_ASSERT((pISR != (TISR)0), ""); xKernelSetIntVector(vector, property, pISR, pDsr, data); } ``` 注释有点错位
查看更多
9
个回答
默认排序
按发布时间排序
grissiom
2015-04-27
这家伙很懒,什么也没写!
没看出来怎么个乱法…… RTT 内核用的标准的 Doxygen 的注释格式,可以自动生成 API 文档。
bernard
2015-04-27
这家伙很懒,什么也没写!
习惯就好,不同的风格。
zdh_054
2016-02-16
这家伙很懒,什么也没写!
同感,真心不喜欢这种风格,我更喜欢用这种格式,比如:struct RT_Thread *pThread;(原:struct rt_thread *thread; )或者 typedef struct RT_Thread{...} RTTHREAD; ... RTTHREAD *pThread; 感觉这种风格阅读起来比较容易,能和关键字有比较明显的区分。
bernard
2016-02-16
这家伙很懒,什么也没写!
>同感,真心不喜欢这种风格,我更喜欢用这种格式,比如:struct RT_Thread *pThread;(原:struct rt_thread *thread; )或者 >typedef struct RT_Thread{...} RTTHREAD; >... >RTTHREAD *pThread; >感觉这种风格阅读起来比较容易,能和关键字有比较明显的区分。 --- 这个还真是不同人不同的风格,如果类似这样的风格,就没有RT-Thread了,这个是我最痛恨的风格 [s:186] 就是因为这种驼峰或啥的风格,导致要重新写一套操作系统。
zdh_054
2016-02-18
这家伙很懒,什么也没写!
>>同感,真心不喜欢这种风格,我更喜欢用这种格式,比如:struct RT_Thread *pThread;(原:struct rt_thread *thread; )或者 >>typedef struct RT_Thread{...} RTTHREAD; >>... >>RTTHREAD *pThread; >>感觉这种风格阅读起来比较容易,能和关键字有比较明显的区分。 > >--- > > > >这个还真是不同人不同的风格,如果类似这样的风格,就没有RT-Thread了,这个是我最痛恨的风格 [s:186] 就是因为这种驼峰或啥的风格,导致要重新写一套操作系统。 --- 我还是有点想不明白,这种风格为什么会导致要重新写一套操作系统呢?请版主指点一下。 还有就算不喜用typedef的方式,那总可以用struct RT_Thread *pThread;这种方式吧?至少一眼过去就可以快速区分那个是C语言的关键字。
dzahz
2016-02-19
这家伙很懒,什么也没写!
习惯了之后,你会现在现在的这种风格是非常好的。 我现在写程序都转换成rt风格了。 任何的代码编辑工具都支持关键字高亮显示,这个和字母大小写的习惯没关系。 顺便说一句,我觉得rt的代码真的非常清析明了,尤其是逻辑上的思路非常的好,代码也是非常清析。我自己水平有限,只有羡慕的份了!
bernard
2016-02-20
这家伙很懒,什么也没写!
我大致说下吧,关于这个编码风格的事情。 命名风格有几种,大小写错落,驼峰命名,Linux/Unix命名风格。 一般来说,需要代码写得尽量精简明了,多一分不需要,少一分不行。函数,简短。文件,长度不需要太长。有一定的文件数,分类清晰。当要达到这个目标时,最恶心的是驼峰命名,大小写有,p,s,c,i,等等前缀。我就是不明白,当你的代码还需要用这种小前缀来标明是什么意思时,你的代码还是以精简明了为目的吗?如果你的代码不能够一目了然,而依靠这类前缀来辅助时,不好意思,你的代码需要重写了,因为你完全没有把代码都明了在心! 大小写的问题,如果可能,尽量避免使用它吧,这类代码在进行输入是,你需要不停的进行shift键切换。当然使用"_"时,也会带来这个问题,但多个(连着的)大写就会带来更多问题。所以代码中,不是必要,尽量少使用大写字母。 当然,这个里面还是和习惯有关系。
chinacool_00
2016-03-26
这家伙很懒,什么也没写!
rt 风格是类似linux风格的,驼峰风格是微软的搞法,所以通常喜欢linux的人会比较习惯这种。作者也是很喜欢linux的,所以。。。你懂的
撰写答案
登录
注册新账号
关注者
0
被浏览
4k
关于作者
sdwys
这家伙很懒,什么也没写!
提问
3
回答
10
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RT-Thread项目助手v0.2.0 - 支持Env Windows
2
RttreadV5.10上,GD32F450Z RTC时间显示问题
3
rt-smart启动流程分析
4
EtherKit快速上手PROFINET
5
RTThread USB转串口无法接收数据
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部