C251编译器问题:函数第3参数不能在函数内计算
#include "stc32g.h"#include "intrins.h"
#include <string.h>
unsigned char buf1;
unsigned char buf2;
void zmemcopy(unsigned char * destptr, unsigned char * sourptr, unsigned int len) //数据拷贝
{
while(len>0)
{
*destptr=*sourptr;
destptr++;
sourptr++;
len--;
}
}
int main(void)
{
zmemcopy(buf1, buf2, 8);
while(1);
}
C25编译此函数后,在KeilC环境下仿真。发现进入此函数运行时,第3个参数的值一直不变,导致循环出不来,前2个参数的值是正常递增的。
是不是C251编译器有问题?
C语言的memcpy可以用吗
小白爱上51 发表于 2024-8-20 17:38
C语言的memcpy可以用吗
memcpy只能复制字符串,因为遇到0x00返回 DebugLab 发表于 2024-8-20 17:43
memcpy只能复制字符串,因为遇到0x00返回
遇0返回的不是strcpy?memcpy我记得有输入长度的啊 DebugLab 发表于 2024-8-20 17:43
memcpy只能复制字符串,因为遇到0x00返回
你的意思是,,即使参数中有长度,,在长度内如果遇到0 会提前返回? _奶咖君_ 发表于 2024-8-21 09:06
遇0返回的不是strcpy?memcpy我记得有输入长度的啊
那是memncpy,中间多个n,给长度也是遇0返回 _奶咖君_ 发表于 2024-8-21 09:06
遇0返回的不是strcpy?memcpy我记得有输入长度的啊
记错了,遇0返回是strncpy
你们没有明白这问题的意思。这个问题在于函数内len--这条语句执行无效 DebugLab 发表于 2024-8-20 17:43
memcpy只能复制字符串,因为遇到0x00返回
memcpy没有试过。我写这个函数例子,只是为了说明C251编译器在处理第3个参数时无效。说明C251编译器有问题
用的哪种CPU,STC32G12K128没问题