shishi 发表于 2009-9-17 14:56:11

ucos-ii 2.85的宏定义为什么多了‘u’字?

奇怪了,为什么这个版本的宏定义都多了一个‘u’字
哪有关于这方面的说明啊?大家说说。。。

2.51版本的定义是这样的:
#defineOS_VERSION            251                  /* Version of uC/OS-II (Vx.yy mult. by 100)    */


而2.85版本的定义又是这样的:

#defineOS_VERSION               285u                /* Version of uC/OS-II (Vx.yy mult. by 100)    */



*********************************************************************************************************
*                              TASK STATUS (Bit definition for OSTCBStat)
*********************************************************************************************************
*/
#defineOS_STAT_RDY               0x00u    /* Ready to run                                          */
#defineOS_STAT_SEM               0x01u    /* Pending on semaphore                                    */
#defineOS_STAT_MBOX            0x02u    /* Pending on mailbox                                    */
#defineOS_STAT_Q               0x04u    /* Pending on queue                                        */
#defineOS_STAT_SUSPEND         0x08u    /* Task is suspended                                       */
#defineOS_STAT_MUTEX             0x10u    /* Pending on mutual exclusion semaphore                   */
#defineOS_STAT_FLAG            0x20u    /* Pending on event flag group                           */

#defineOS_STAT_PEND_ANY         (OS_STAT_SEM | OS_STAT_MBOX | OS_STAT_Q | OS_STAT_MUTEX | OS_STAT_FLAG)

/*
*********************************************************************************************************
*                           TASK PEND STATUS (Status codes for OSTCBStatPend)
*********************************************************************************************************
*/
#defineOS_STAT_PEND_OK            0u    /* Pending status OK, not pending, or pending complete   */
#defineOS_STAT_PEND_TO            1u    /* Pending timed out                                       */
#defineOS_STAT_PEND_ABORT         2u    /* Pending aborted                                       */

yajira 发表于 2009-9-17 16:39:35

u嘛, 说明是指定类型, 可以表示的范围更大
#defineOS_VERSION            251         这个251是没有指定类型..

ShangGuan 发表于 2009-9-17 16:46:53

#defineOS_VERSION            251         
//这里251是int型

#defineOS_VERSION            251u   
//这里251u是unsigned int型


【1楼】 yajira
这个251是没有指定类型..
---------------------------------------
只是没有显式指定类型。
字面值整型常量的类型,C语言标准有明确规定。

shishi 发表于 2009-9-17 16:58:03

哦,想起来了,一直都是直接写数字,看来我的代码得规范起来啊,呵呵,谢谢

yajira 发表于 2009-9-17 17:01:11

哈哈, 果然厉害..羞愧了....

shishi 发表于 2009-9-17 17:01:58

查过,C标准如果写成:#defineOS_VERSION      251   
中的数字251在缺省情况下整型文字常量被当作是一个int 型的有符号值

maxiang1985 发表于 2012-7-16 16:05:22

heh ,学习了,看来的规范啊

maiyingzhao 发表于 2012-7-19 08:18:54

本来也在纳闷这意思,受教了

guhaijun 发表于 2013-1-8 09:40:26

markmark ucos定义数字后面的u 呵呵

漂白的心 发表于 2013-1-8 10:12:48

如何定义简短的常量呢?
比如0~255的无符常量

leafzq 发表于 2013-1-15 11:06:08

哈哈,每次来OurAVR论坛都能很快轻松找到答案!
页: [1]
查看完整版本: ucos-ii 2.85的宏定义为什么多了‘u’字?