2016-10-01 5 views
0

혹시

#include <cmath> 
struct AB { 
    float f=NAN; 
    float foo(float a=NAN); 
}; 

다음 생성 또 다른 카일의 "기능"때 다음 코드에 직면 적이 이상한 오류가 발생 출력을 구축 : 나를 위해

compiling main.cpp... 
..\..\src\main.cpp(24): error: #65: expected a ";" 
    float foo(float a= 
AN); 
..\..\src\main.cpp(24): error: #109: expression preceding parentheses of apparent call must have (pointer-to-) function type 
     float foo(float a=NAN); 
..\..\src\main.cpp(24): error: #18: expected a ")" 
     float foo(float a=NAN); 
..\..\src\main.cpp(24): error: #18: expected a ")" 
     float foo(float a=NAN); 
..\..\src\main.cpp(23): error: #65: expected a ";" 
     float f=NAN; 
..\..\src\main.cpp: 0 warnings, 5 errors` 

이 버그처럼 보인다. 나는 GCC와 다른 컴파일러에서 같은 성가신 것을 한번도 경험하지 못했다.

답변

0

2 행의 오류. 환상적. WTF? MDK-ARM은 NAN을 해결할 수 없습니다.

#define __ESCAPE__(__x) (__x) 
더 나은

에만이 "멋진"컴파일러를 만들 :
이 다음 행으로 해결 될 수

#ifdef __CC_ARM 
#define __ESCAPE__(__x) (__x) 
#endif 

또 다른 해결책 (확실하지,하지만 수 컴파일러의 확장자가되어야 함) :

float f = 0f_7FC00000;