-
Problème avec macros
Bonjour,
J'ai défini la macro suivante en début de fichier :
Code:
#define WRAPMAX 1.000001f;
Dans une fonction, elle est utilisée dans le bout de code suivant :
ss = (AtFloat)fmod(ss, WRAPMAX);
tt = (AtFloat)fmod(tt, WRAPMAX);
À la compilation, j'obtiens ceci :
error C2143: erreur de syntaxe*: absence de ')' avant ';'
error C2059: erreur de syntaxe*: ')'
J'aimerais déjà comprendre pourquoi j'obtiens cette erreur.
Par ailleurs, si je remplace la macro par :
Code:
const float WRAPMAX=1.000001f;
J'obtiens une erreur au linking parce qu'une telle déclaration a déjà été faite dans un autre fichier source.
Les variables globales sont-elles accessibles aux autres fichiers, même sans mot-clé extern ? Si c'est le cas, comment définir une variable globale, mais uniquement pour le fichier courant ?
Je suis sous Visual, et mon projet est bien déclaré en C.
-
Bonjour,
IL y a un ";" de trop dans ta définition :
Code:
#define WRAPMAX 1.000001f;
Après, les constantes globales ne doivent être définies qu'une fois : il ne faut pas stocker leur valeur dans un fichier header :
Code:
extern const float WARPMAX;
Code:
const float WARPMAX = .123456f;
-
Argh ! Honte à moi !!
J'avais auparavant déclaré ça comme un const, et comme ça ne fonctionnait pas pour une autre raison (symptôme décrit dans la seconde partie du post initial), j'avais remis l'ancienne version en oubliant d'enlever le ;....
:oops:
Merci !!