2016-10-01 2 views
0

Avez-vous déjà face à encore « fonction » d'un autre Keil lorsque le code suivantDans Keil MDK-ARM C de 11 * par défaut la valeur NAN * pour le paramètre de membre et la fonction génère des erreurs étranges

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

génère ensuite construire sortie:

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` 

Pour moi, il ressemble bug. Je n'ai jamais rencontré la même nuisance dans GCC et d'autres compilateurs.

Répondre

0

5 erreurs en 2 lignes. Fantastique. WTF? MDK-ARM ne peut pas résoudre NAN.
Cela pourrait être fixé à la ligne suivante:

#define __ESCAPE__(__x) (__x) 

Mieux faire pour que ce "frais" compilateur:

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

Une autre solution (pas sûr, mais il pourrait être l'extension du compilateur):

float f = 0f_7FC00000;