在GCC中我收到以下错误:
aes.c:在函数'copy_block'中:
aes.c:278:错误:需要左值作为递增操作数
aes.c:278:错误:需要左值作为递增操作数
这是一段代码:
static void copy_block( void * d, void *s, uint_8t nn )
{
while( nn-- )
*((uint_8t*)d)++ = *((uint_8t*)s)++;
}
Run Code Online (Sandbox Code Playgroud)
我试图将其更改为可编译版本,但不幸的是,作为一名Java程序员,我不清楚这里到底发生了什么.
也许有人知道如何改变它在GCC中可编译的来源,或者有人知道这里发生了什么.对我来说,左手值的解除引用似乎很奇怪,但不知何故,它似乎在Visual C++中完美运行.
这是一个小型遗留程序,我必须将其移植到Linux机器上.
提前谢谢你的帮助.
试试这个:
#include <string.h>
static void copy_block( void * d, void *s, uint_8t nn ) {
memcpy(d, s, (size_t)nn);
}
Run Code Online (Sandbox Code Playgroud)
在那里做的是不好的.
这应该这样做:
static void copy_block(void *d, void *s, uint_8t nn)
{
uint_8t *ud = (uint_8t *)d;
uint_8t *us = (uint_8t *)s;
while (nn--)
{
*ud = *us;
++ud;
++us;
}
}
Run Code Online (Sandbox Code Playgroud)
它也更具可读性.
| 归档时间: |
|
| 查看次数: |
383 次 |
| 最近记录: |