【发布时间】:2015-09-10 05:49:02
【问题描述】:
我目前正在从 32 位移植到 64 位。我收到了警告:
从不同大小的整数转换为指针
在下面的代码中
AcLogFileWrite(
(FILE *) pOut->pTrace->logFileHandle, /* warning in this line */
outRecord,
outRecordLen);
AcLogFileWrite()的原型是
int AcLogFileWrite(
FILE * handle,
char * data,
int bytes);
这里参数pOut->pTrace->logFileHandle的类型是int。
如何解决此警告?
【问题讨论】:
-
检查 'int' 和 'FILE*' 是否具有相同的大小。可能是指针的大小是 32 位版本的两倍
-
AcLogFileWrite()期望第一个参数为FILE指针,但您传递的是int类型。 -
为什么它首先是
int?将其更正为FILE *,或者如果你绝对必须,void *。 -
logFileHandle是如何初始化的? -
有什么原因
logFileHandle必须是int类型吗?如果不是,请将其更改为FILE *。如果是这样,您必须创建一些整数到FILE*的映射。