智能车制作
标题:
Error :C1815 :OSFlagTbl not declared
[打印本页]
作者:
凌晨
时间:
2013-3-24 16:02
标题:
Error :C1815 :OSFlagTbl not declared
本帖最后由 凌晨 于 2013-3-24 16:05 编辑
在UCOS-II的移植中编译时会出现了一个报错:
Error :C1815 :OSFlagTbl not declared (or type name)
原程序如下:
void OS_FlagInit( void ){
#if OS_MAX_FLAGS == 1
OSFlagFreeList = ( OS_FLAG_GRP * ) &OSFlagTbl[0]; /* Only one event flag group ! */
OSFlagFreeList->OSFlagType = OS_EVENT_TYPE_UNUSED;
OSFlagFreeList->OSFlagWaitList = ( void * ) 0;
#endif
#if OS_MAX_FLAGS >= 2
INT8U i;
OS_FLAG_GRP *pgrp1;
OS_FLAG_GRP *pgrp2;
pgrp1 = &OSFlagTbl[0];
pgrp2 = &OSFlagTbl[1];
for( i = 0; i < ( OS_MAX_FLAGS - 1 ); i++ ){
pgrp1->OSFlagType = OS_EVENT_TYPE_UNUSED;
pgrp1->OSFlagWaitList = (void *)pgrp2;
pgrp1++;
pgrp2++;
}
pgrp1->OSFlagWaitList = (void *)0;
OSFlagFreeList = (OS_FLAG_GRP *)&OSFlagTbl[0];
#endif
}
复制代码
其中 OSFlagTbl数组是在UCOS_II.H中声明的:
extern OS_FLAG_GRP OSFlagTbl[ OS_MAX_FLAG ];
extren OS_FLAG_GRP *OSFlagFreeList;
用Codewarrior编译时会报错,可能用其他编译器不会,
(好吧,写不完,接下面)
作者:
凌晨
时间:
2013-3-24 16:05
因此,在使用这两个变量时最好声明下是外部变量:
void OS_FlagInit( void ){
#if OS_MAX_FLAGS == 1
OSFlagFreeList = ( OS_FLAG_GRP * ) &OSFlagTbl[0]; /* Only one event flag group ! */
OSFlagFreeList->OSFlagType = OS_EVENT_TYPE_UNUSED;
OSFlagFreeList->OSFlagWaitList = ( void * ) 0;
#endif
#if OS_MAX_FLAGS >= 2
INT8U i;
OS_FLAG_GRP *pgrp1;
OS_FLAG_GRP *pgrp2;
/* 添加的部分 ,声明外部变量 */
extern OS_FLAG_GRP OSFlagTbl[];
extern OS_FLAG_GRP *OSFlagFreeList;
pgrp1 = &OSFlagTbl[0];
pgrp2 = &OSFlagTbl[1];
for( i = 0; i < ( OS_MAX_FLAGS - 1 ); i++ ){
pgrp1->OSFlagType = OS_EVENT_TYPE_UNUSED;
pgrp1->OSFlagWaitList = (void *)pgrp2;
pgrp1++;
pgrp2++;
}
pgrp1->OSFlagWaitList = (void *)0;
OSFlagFreeList = (OS_FLAG_GRP *)&OSFlagTbl[0];
#endif
}
复制代码
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2