我有像
这样的代码while (n--)
{
*((char*)dest++) = *((char*)src++);
}
其中dest
和src
是无效指针,n
是一个大小。目标是重新实现memcpy功能。使用gcc编译此代码时,一切都很好,但是当我添加-Wpedantic
标志时,我有四个警告“错误的类型参数要递增”。
有什么想法吗?
答案 0 :(得分:4)
在使用它们之前将dest
和src
投射到unsigned char *
会提供最干净的代码(代价是堆栈上的两个指针变量) )。
unsigned char * dest_p = (unsigned char *)dest;
unsigned char * src_p = (unsigned char *)src;
while ( n-- )
{
*dest_p++ = *source_p++;
}
(为什么unsigned
?因为这是标准明确定义它的方式。;-))