如何通过宏复制两个void指针之间的内存?

时间:2017-10-30 18:28:01

标签: c memory macros

所以我正在尝试编写自己的内存副本实现的宏版本,但由于某种原因它出于某种原因退出非零状态。

#include <stdio.h>
#include <stdlib.h>

#define BTools_WRITE(dest, src, n) for (size_t i = 0;i<n;i++) { \
                *(unsigned char*)(dest++) = *(unsigned char*)(src++); \
}

int main(void) {
  char* f = "Hello sir!";
  char* u = "4444";
  void* fptr = f;
  void* uptr = u;
  int g = 4;
  BTools_WRITE(fptr, uptr, g);
  printf("%s\n", f);
  return 0;
}

我尝试将for循环更改为while循环,或者在整个宏周围放置do-while循环,它总是以非零状态返回。我怎样才能解决这个问题?这可以用一个宏来完成吗?

1 个答案:

答案 0 :(得分:2)

您正在尝试写入程序的常量数据。试试这个;

char f[] = "Hello sir!";