将结构指针类型转换为 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。也许您正在使用带有这些东西作为扩展的编译器,但许多人会因为容易出错而反对它。毫无疑问,有更好的方法可以做任何您想做的事情。
是否可以将 struct 指针类型转换为 char 指针引用?我知道我们可以将任何指针类型转换为任何其他指针类型。但是当我尝试对结构进行类型转换时出现错误。我正在使用 C++ 编译器。
错误:
错误:从类型 '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。也许您正在使用带有这些东西作为扩展的编译器,但许多人会因为容易出错而反对它。毫无疑问,有更好的方法可以做任何您想做的事情。