【发布时间】:2013-01-23 19:38:47
【问题描述】:
我正在 Code::Blocks 的 C 项目中工作。
编译时出现错误:“在第 81、85、90、91 行从类型 'double' 分配给类型 'double *' 时类型不兼容”。
该项目是采取单位转换工具并合并多个功能而不是main()下的所有内容。
【问题讨论】:
-
请勿使用外部链接引用代码。 (我们怎么知道它没有充满病毒?)将你的代码缩减到有意义的小尺寸,然后直接放在问题中。
我正在 Code::Blocks 的 C 项目中工作。
编译时出现错误:“在第 81、85、90、91 行从类型 'double' 分配给类型 'double *' 时类型不兼容”。
该项目是采取单位转换工具并合并多个功能而不是main()下的所有内容。
【问题讨论】:
您遇到的所有错误都是主题的变体。以这一行为例:
pKelvin = PROD((fahrenheit+459.67),ytemp);
这里,pKelvin 的类型为double*,这意味着它是一个指向double 类型对象的指针。另一方面,右侧的类型为double,这意味着它是一个实际的double。 C 抱怨是因为你不能将doubles 分配给double*s,因为它们代表着根本不同的类型。
要解决这个问题,您可能需要编写
*pKelvin = PROD((fahrenheit+459.67),ytemp);
这表示“将PROD((fahrenheit+459.67),ytemp) 的值存储在pKelvin 指向的double。这是有效的,因为您现在将double 分配给double 类型的对象。
更一般地说,如果您看到类似这样的错误,这可能意味着您正在将指针分配给非指针,反之亦然。
希望这会有所帮助!
【讨论】:
尝试取消引用指针:
*pKelvin = PROD((fahrenheit+459.67),ytemp);
^
【讨论】: