IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Fonction statique a deux variables


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Par défaut Fonction statique a deux variables
    Bonjour:
    Voilà le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    struct vec2f { 
    //... défintions diverses
     
    static vec2f sign( const vec2f & v ) { return vec2f( ::signf(v.x), ::signf(v.y) ); }
    static vec2f min( const vec2f & v1, const vec2f & v2 ) { return vec2f( fminf(v1.x, v2.x), fminf(v1.y, v2.y) ); } 
    };
    La première ligne passe, la deuxième coince:
    syntaxe error: '('
    syntaxe error: ')'
    syntaxe error: missing ')' before '?'
    vect2f::vect2f(void) cannot be declared public.

    Je tiens à dire que j'ai écris fminf(float,float), de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    inline float fminf(float a,float b)
    {
    if(a<b)
    return a;
    return b;
    }
    Je ne sais d'où viennent ces erreurs.
    Pourriez-vous m'aider?

    raphchar

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Visual Studio ? Dans ce cas, min est une macro...

    En outre, fminf ne devrait pas être défini ainsi, il existe std::min qui fait très bien le travail.

  3. #3
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    Comme l'a dit mathieu Brucher, Visual studio inclut de base "windows.h". Or Visual studio inclut automatiquement windows.h qui contient les macro "min" et "max"... qui remplace alors tes mots min(a,b) par un truc du genre Le meilleur moyen d'éviter ça est de faire des undef (ou de changer de compilo/IDE ) :
    au début de ton fichier, tu met:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #ifdef min
      #undef min
    #endif
    #ifdef max
      #undef max
    #endif
    Bonne chance

    Remarque: std::min ne marchera également que si on a mis le code ci-dessus: en effet, visual studio est incompatible avec la norme puisque sans faire cela, c'est la macro qui agit en premier. du coups, il me semble qu'ils fournissent un truc du genre fmin et fmax à la place, mais bon, c'est vraiment n'importe quoi.... autant faire un undef, ça permet de rendre le code portable.

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Il ne l'inclut pas de base, mais il suffit d'inclure le mauvais en-tête et boom...

  5. #5
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    Citation Envoyé par Matthieu Brucher Voir le message
    Il ne l'inclut pas de base, mais il suffit d'inclure le mauvais en-tête et boom...
    je t'assure que sur un code sans rien, (enfin que de la std), j'avais ce problème.

    Ensuite, c'est peut-être une question de configuration du compilo...

    Enfin bon, j'ai pas ces problèmes avec GCC

  6. #6
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Par défaut
    Ca fonctionne avec les undef, merci à tous.

  7. #7
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par méphistopheles Voir le message
    je t'assure que sur un code sans rien, (enfin que de la std), j'avais ce problème.

    Ensuite, c'est peut-être une question de configuration du compilo...

    Enfin bon, j'ai pas ces problèmes avec GCC
    Ah bon ? J'utilise régulièrement Visual Studio chez moi, et sauf si je fais des trucs spécifiques Windows, aucun souci. Avec du Qt ou en ligne de commande, je n'ai jamais eu à virer ces min() max(). Faudra voir si la 2010 a toujours le souci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Evaluer une fonction a deux variables.
    Par Kichott dans le forum MATLAB
    Réponses: 7
    Dernier message: 04/07/2009, 09h14
  2. [Débutant] extremum fonction à deux variables
    Par Medde dans le forum MATLAB
    Réponses: 13
    Dernier message: 25/06/2009, 13h57
  3. Fonction à deux variables.
    Par bigboy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/04/2009, 12h11
  4. Fonctions à deux variables
    Par niblos79 dans le forum MATLAB
    Réponses: 2
    Dernier message: 12/11/2007, 09h33
  5. fonctions à deux variables
    Par prince19 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/06/2007, 10h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo