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++

  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
    Points : 725
    Points
    725
    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
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    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 éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    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.
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    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 éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    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
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  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
    Points : 725
    Points
    725
    Par défaut
    Ca fonctionne avec les undef, merci à tous.
    Raphchar.

  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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    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.

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    Citation Envoyé par raphchar Voir le message
    Ca fonctionne avec les undef, merci à tous.
    n'oublie pas de cliquer sur

    Citation Envoyé par Matthieu Brucher Voir le message
    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.
    C'était sur le 2005.. après, j'utilise assez peu visual pour ne pas perdre de temps à essayer de trouver d'où ça vient... ou pour en installer un autre.
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  9. #9
    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
    Points : 725
    Points
    725
    Par défaut
    Peut-être est-ce spécifique à vs2005 et vs 2010?
    Raphchar.

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    Citation Envoyé par raphchar Voir le message
    Peut-être est-ce spécifique à vs2005 et vs 2010?
    Attention, si tu utilise un projet MFC ou que tu inclue "windows.h" ou n'importe quelle ressource windows, c'est normal que ça arrive. Dans le cas contraire, c'est une de ces cochoneries de visual.
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  11. #11
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par méphistopheles Voir le message
    Attention, si tu utilise un projet MFC ou que tu inclue "windows.h" ou n'importe quelle ressource windows, c'est normal que ça arrive. Dans le cas contraire, c'est une de ces cochoneries de visual.
    Ca m'est arrivé sur un de mes projets où je n'utilisais que du pur standard. J'ai ajouté un fichier annotate.h fourni par Intel pour le profiling et le debuggage -> impossible de recompiler à cause de ces macros.

  12. #12
    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
    Points : 725
    Points
    725
    Par défaut
    Non, pas d'utilisation MFC
    Raphchar.

+ 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