搜索
bottom↓
回复: 8

合泰HI-TECK编译错误!

[复制链接]

出0入0汤圆

发表于 2012-4-23 18:15:52 | 显示全部楼层 |阅读模式
typedef struct
{
     uint8 ExitMark;             //


     uint8 Cursor;               //
     uint8 PageNo;               //
     uint8 Index;                //



     uint8 DispNum;              //
     uint8 MaxPage;              //

}MENU_PRMT;


// 菜单执行
typedef struct
{
     char *MenuName;            //
     void  (*Function)(void);    //

}MENU_TABLE;

void Menu_Process(uint8 *menuName, MENU_PRMT *prmt, MENU_TABLE *table, uint8 num)
{
  uint8 key;

Menu_PrmtInit(prmt, 3, num-3+1);                          //

do
{
     Disp_String(0, 0, menuName);                                   //
     Menu_Display(table, prmt->PageNo, prmt->DispNum, prmt->Cursor);
      key = Menu_KeyScan();                      //
      if (Menu_Move(prmt, key) == 0x00)                                  //
      {
       Clear_Draw(0x00);                       //
       table[prmt->Index].Function();                               // 出错的地方
      }

} while (prmt->ExitMark == 0);
}

void Menu_Struct_Init()
{//======================主菜单==================================

        MainSet[0].MenuName = "1.  模式选择    ";
        MainSet[0].Function = Menu_ModeSet;
       
        MainSet[1].MenuName = "2.  时间设置    ";
        MainSet[1].Function = Menu_TimeSet;
       
        MainSet[2].MenuName = "3.  安全设置    ";
        MainSet[2].Function = Menu_SafeSet;

        MainSet[3].MenuName = "4.  退    出    ";
        MainSet[3].Function = Menu_ExitMain;       
}

因为合泰全局变量非常量无法赋初值,所以只能在函数中给结构体赋值,但是这里有出现这个错误了,,所有函数之前已声明,具体的 fpbase、fp__Menu_ModeSet不是我定义的变量,貌似的汇编阶段自己出来的什么指针相关的,我理解的意思是不知道函数入口,,因为我试了一下,如果在赋初值之前先调用如Menu_ModeSet()函数,那么后面的fp__Menu_ModeSet报错不会出现。fp是指针的意思?然后这种问题具体可以怎么解决呢!希望大大指点迷津!
下面为报错:
F:\MYworkpalce\HTproj\HI_Main\HTtest.c: 200: (800) undefined symbol "fpbase"
F:\MYworkpalce\HTproj\HI_Main\HTtest.c: 200: (800) undefined symbol "fp__Menu_ModeSet"
F:\MYworkpalce\HTproj\HI_Main\HTtest.c: 208: (800) undefined symbol "fp__Menu_TimeSet"
F:\MYworkpalce\HTproj\HI_Main\HTtest.c: 216: (800) undefined symbol "fp__Menu_SafeSet"
F:\MYworkpalce\HTproj\HI_Main\HTtest.c: 224: (800) undefined symbol "fp__Menu_ExitMain"

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2012-5-9 18:00:00 | 显示全部楼层
你的那几个函数还没有实现,把要不就是没有声明

出0入0汤圆

 楼主| 发表于 2012-5-12 18:40:20 | 显示全部楼层
ijlc1314 发表于 2012-5-9 18:00
你的那几个函数还没有实现,把要不就是没有声明

你在跟我开玩笑吧!

出0入0汤圆

发表于 2012-5-13 10:15:39 | 显示全部楼层
先顶后看~~

出0入0汤圆

发表于 2012-5-13 11:07:13 来自手机 | 显示全部楼层
不好意思,只看了编译器出来的错误提示没看楼主的说明。楼主已经声明了,不过还有另外的可能,那就是楼主的那几个函数是在其他的.c文件里面的,这个编译器会自动不编译那些没有调用过的函数,楼主可以试下把那几个函数放到相同的源文件中试下。或是,楼主已经解决了?

出0入0汤圆

发表于 2012-5-13 11:19:20 来自手机 | 显示全部楼层
我刚刚自己测试了一下,确实是让编译器给优化掉了,但只要程序中有调用到
MainSet.Funtion[n](),那么那几个错误就会消失

出0入0汤圆

发表于 2012-5-13 11:22:52 来自手机 | 显示全部楼层
我刚刚自己测试了一下,确实是让编译器给优化掉了,但只要程序中有调用到
MainSet.Funtion[n](),那么那几个错误就会消失

出0入0汤圆

发表于 2012-5-13 11:24:39 来自手机 | 显示全部楼层
另外,我试了全局变量是可以赋初值的,不知道是否是编译器版本不同,我的是9.10版本的

出0入0汤圆

发表于 2012-5-14 08:56:20 | 显示全部楼层
syaoraner 发表于 2012-5-12 18:40
你在跟我开玩笑吧!

在程序中只要有调用到MainSet[0].Function()  MainSet[1].Function()  MainSet[2].Function ()  MainSet[3].Function () ,就可以了

全局变量是可以赋初始值的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-18 01:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表