croptree 发表于 2011-7-26 02:37:48

Fx-9860 SDK 编程遇到的问题

不知道为什么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;
    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

如果给个例子,感激不尽!!

diameter 发表于 2011-7-26 08:10:16

char s="Holle World";Print(S);这样子就不可以,,望高手指点,,,
croptree 发表于 2011-7-26 02:37 http://www.cncalc.org/images/common/back.gif
首先你这样的写法就是错的,s是字符,怎么么能把指针赋值给他?

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


另外这里有一个printf的例子
http://www.cncalc.org/thread-5854-1-1.html

croptree 发表于 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;
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
很郁闷,,呵呵,,

diameter 发表于 2011-7-26 12:59:49

3# croptree .

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

void fxprintf(char *cpFormat, ...);

diameter 发表于 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)

Nero 发表于 2011-7-26 13:31:41

要养成编写函数代码前先声明(或者写头文件)的习惯。

croptree 发表于 2011-9-1 20:30:53

太谢谢了,,

croptree 发表于 2011-9-1 20:32:57

2# diameter

终于明白了,,太谢谢您的指点了,,
页: [1]
查看完整版本: Fx-9860 SDK 编程遇到的问题