将结构指针类型转换为 char 指针引用

typecast struct pointer into char pointer reference

是否可以将 struct 指针类型转换为 char 指针引用?我知道我们可以将任何指针类型转换为任何其他指针类型。但是当我尝试对结构进行类型转换时出现错误。我正在使用 C++ 编译器。

错误:
错误:从类型 'char*'

的临时类型 'char*&' 的非常量引用无效初始化

请看下面的例子:

struct test {
    int a;
    bool y;
    char buf[0];
}

struct test *x_p = NULL;

char *p = "Some random data......";   // this can be more than 64 bytes

x_p = (struct test *) malloc(sizeof(struct test) + 65);
x_p->a = 10;
x_p->y = false;
memcpy(x_p->buf, p, 64); //copy first 64 bytes

/* Here I am getting an error : 
 * error: invalid initialization of non-const reference of type 'char*&' from a temporary of type 'char*'
 */

call_test_fun((char *)x_p);

// Function Declaration 

err_t call_test_fun(char *& data);

函数声明应该是:

err_t call_test_fun(char * data);

你有一个错误 & 。函数定义应该匹配。

请注意,您的代码使用了不属于标准 C++ 的技术:在结构中具有零大小的数组,并直接写入 malloc 的 space。也许您正在使用带有这些东西作为扩展的编译器,但许多人会因为容易出错而反对它。毫无疑问,有更好的方法可以做任何您想做的事情。