cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 6496|回复: 7

[fx-9860/9750] Fx-9860 SDK 编程遇到的问题

[复制链接]
发表于 2011-7-26 02:37:48 | 显示全部楼层 |阅读模式
不知道为什么Print((unsigned char*)"*Holle World");就可以char s="Holle World";Print(S);这样子就不可以,,望高手指点,,,

#include "fxlib.h"
#include "stdio.h"

int AddIn_main(int isAppli, unsigned short OptionNum)
{
    unsigned int key;

    const char *s, *control="%d";
    int ret,buffer[10];
    ret=sscanf(s, control, buffer);
    locate(1,1);
    ret=printf(control, buffer);


while(1){
        GetKey(&key);
    }
    return 1;
}

#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum)
{
    return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}
#pragma section

如果给个例子,感激不尽!!
发表于 2011-7-26 08:10:16 | 显示全部楼层
char s="Holle World";Print(S);这样子就不可以,,望高手指点,,,
croptree 发表于 2011-7-26 02:37

首先你这样的写法就是错的,s是字符,怎么么能把指针赋值给他?

另外9860里面没有流,你用printf明显是不正确的,请仔细翻翻说明文档里面的《C Standard Library》,你可以看到printf是不被支持的。


另外这里有一个printf的例子
http://www.cncalc.org/thread-5854-1-1.html
 楼主| 发表于 2011-7-26 12:45:47 | 显示全部楼层
本帖最后由 croptree 于 2011-7-26 12:53 编辑

就是不知道怎么用,,能不能详细的解释一下呢?
#include "fxlib.h"
#include "stdio.h"
#include "stdarg.h"

int AddIn_main(int isAppli, unsigned short OptionNum)
{
    unsigned int key;
    locate(3,1);
    fxprintf("%d",12);
   
    while(1){
      GetKey(&key);
    }
    return 1;
}

void fxprintf(char *cpFormat, ...)
{
  char cpBuffer[512];
  va_list pArgList;
  va_start(pArgList, cpFormat);
  vsprintf(cpBuffer, cpFormat, pArgList);
  va_end(pArgList);
  Print(cpBuffer);
}

//*********************************************
#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum)
{
    return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}

#pragma section

编译时结果提示  ERROR: Process failed with return code: 1  
很郁闷,,呵呵,,
发表于 2011-7-26 12:59:49 | 显示全部楼层
3# croptree .

我说ls,编译要看错误好吧,
错误;
  1. "C:\Program Files\CASIO\fx-9860G SDK\OS\SH\bin\shc.exe" -subcommand=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\hmkA5.tmp
  2. C:\132\123.c(17) : C2144 (E) Type mismatch
  3. C:\132\123.c(24) : C1016 (W) Argument mismatch
复制代码
你在AddIn_main前面加个声明不就行了

void fxprintf(char *cpFormat, ...);
发表于 2011-7-26 13:04:46 | 显示全部楼层
本帖最后由 diameter 于 2011-7-26 13:22 编辑

我说LZ有没有把C学好啊,
出这种问题只能说明对C的了解不深刻。
而且SH的处理器架构与Intel不相同,处理跨平台的时候更麻烦(比如文件共享)
建议先在成熟的IDE下把C学好了再来用9860SDK
再说SDK里光靠C/C++是没用的,只有用ASM才能发挥9860的全部优势(例如那个Passwrd)
发表于 2011-7-26 13:31:41 | 显示全部楼层
要养成编写函数代码前先声明(或者写头文件)的习惯。
 楼主| 发表于 2011-9-1 20:30:53 | 显示全部楼层
太谢谢了,,
 楼主| 发表于 2011-9-1 20:32:57 | 显示全部楼层
2# diameter

终于明白了,,太谢谢您的指点了,,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-11-22 01:12 , Processed in 0.057884 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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