编译错误 #336

推推 grbl 3年前 (2023-02-05) 312次浏览
关闭
VasilyStepanov 打开了这个问题 2012 年 12 月 12 日 · 7条评论
关闭

编译错误 #if with no expression#336

VasilyStepanov 打开了这个问题 2012 年 12 月 12 日 · 7条评论

评论

编译错误 #336
In file included from Configuration.h:351:0,
                 from Marlin.h:24,
                 from temperature.h:24,
                 from ultralcd.cpp:2:
thermistortables.h:477:114: error: #if with no expression
thermistortables.h:543:109: error: #if with no expression

我猜应该是#ifdef …

编译错误 #336
贡献者

我认为这只有在您使用太旧版本的 avr-gcc 时才会发生。

编译错误 #336

这不是关于 gcc 版本的问题。这是一个关于 C++ 标准的问题。
如果您真的想使用#if 宏而不是#ifdef 宏,则应使用“#if defined WHATEVER”符号。


来自http://www.cplusplus.com/doc/tutorial/preprocessor/的“#ifdef 和#ifndef 的行为也可以通过使用在任何#if 或#elif 指令中分别定义和!定义的特殊运算符来实现”

编译错误 #336
贡献者

但它不是“#if defined”,代码是“#if (THERMISTORHEATER_0 == 51) || (THERMISTORHEATER_1 == 51) || (THERMISTORHEATER_2 == 51) || (THERMISTORBED == 51)”

编译错误 #336

很抱歉造成这样的混乱。我应该更明确。

我说的是这行代码:“# if HEATER_0_USES_THERMISTOR //在热敏电阻的情况下,最高温度导致最低 ADC 值”,它在这里:https ://github.com/ErikZalm/Marlin/blob/ Marlin_v1/Marlin/thermistortables.h#L477

thermistortables.h 中还有其他几行有同样的问题。

编译错误 #336
贡献者

这显然应该是#ifdef。

编译错误 #336
贡献者

啊,是的,那确实需要是#ifdef。修复它。

我的代码有一些额外的测试热敏电阻表,所以我看错了行。