下一个代码
时,您是否遇到过另一个Keil的"特性"#include <cmath>
struct AB {
float f=NAN;
float foo(float a=NAN);
};
生成下一个构建输出:
compiling main.cpp... ....srcmain.cpp(24): error: #65: expected a ";" float foo(float a= AN); ....srcmain.cpp(24): error: #109: expression preceding parentheses of apparent call must have (pointer-to-) function type float foo(float a=NAN); ....srcmain.cpp(24): error: #18: expected a ")" float foo(float a=NAN); ....srcmain.cpp(24): error: #18: expected a ")" float foo(float a=NAN); ....srcmain.cpp(23): error: #65: expected a ";" float f=NAN; ....srcmain.cpp: 0 warnings, 5 errors`
对我来说,它看起来像虫子。我从来没有在GCC和其他编译器中遇到过同样的麻烦。
2行5个错误太棒了。WTF ?MDK-ARM无法解析NAN
.
这可以通过下一行来修复:
#define __ESCAPE__(__x) (__x)
最好只针对这个"很酷的"编译器:
#ifdef __CC_ARM
#define __ESCAPE__(__x) (__x)
#endif
另一个解决方案(不确定,但它可能是编译器的扩展):
float f = 0f_7FC00000;