c - 如何通过宏在两个空指针之间复制内存?

标签 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 循环,它总是以非零状态返回。我怎样才能解决这个问题?这可以只用一个宏来完成吗?

最佳答案

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

char f[] = "Hello sir!";

关于c - 如何通过宏在两个空指针之间复制内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47021952/

相关文章:

python - C如何实现大数的Python赋值

c++ - 如何声明紧凑型大于 CPU 机器?

c - 为什么 C 快速排序函数(磁带比较、磁带交换)比冒泡排序函数慢得多?

java - JDOM需要多少 "overhead"内存来生成XML文件?

基于宏函数参数的 C++ 宏函数扩展

Scheme 中的宏和内部定义

c - 使用顶点缓冲区和纹理缓冲区的 OpenGL C++ 顺序

在linux上读写物理地址内存的自定义代码

C++对象,成员的内存位置偏移

c - 在 C11 匿名结构定义中使用宏