【发布时间】:2010-12-11 01:22:45
【问题描述】:
我有一个带有原型void* myFcn(void* arg) 的函数,它用作pthread 的起点。我需要将参数转换为 int 以供以后使用:
int x = (int)arg;
编译器(GCC 版本 4.2.4)返回错误:
file.cpp:233: error: cast from 'void*' to 'int' loses precision
投射这个的正确方法是什么?
【问题讨论】:
-
您使用的是 64 位系统吗?
-
你应该做 int x = *((int *)arg);您正在从 void * 转换为 int 这就是您收到警告的原因
-
我无法推翻我对 user384706 答案的支持,但这是错误的。
x = *((int *)arg);是您如何在/void*指向的位置获得int。它不会将void*本身重新解释为int。 -
int *x = (int *)arg; // 值为 *x
标签: c++ casting void-pointers