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

Visual C++ Discussion :

compilation error C2864


Sujet :

Visual C++

  1. #1
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut compilation error C2864
    Bonjour,

    Je bosse actuellement sur un jeu utilisant la technologie Cocos2d-x pour déploiement sur iPhone et Android

    une partie de l equipe bosse sur XCode sous Mac et l autre sur Visual Studio

    sous XCode , ce code compile sans soucis mais ca bloque sur Visual C++, une idée de comment résoudre le soucis

    error C2864: '__s_resources::resources_begin'*: seules les données membres static const intégrales peuvent être initialisées dans une classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
     
    //------------------------------------------------------------------------------
    // Macros pour définir la structure des resources
    //
    #define BEGIN_GROUP(__GROUP_NAME__) \
        struct __s_##__GROUP_NAME__ {
     
    #define END_GROUP(__GROUP_NAME__) \
        }; \
        __s_##__GROUP_NAME__ __GROUP_NAME__;
     
    #define BEGIN_RESOURCES \
       struct __s_resources { \
        NEW_RESOURCE(resources_begin, 0)
     
    #define END_RESOURCES \
            NEW_RESOURCE(resources_end, 0) \
        }; \
        static __s_resources resources;
     
    #define NEW_RESOURCE(__RESOURCE_NAME__, __RESOURCE_PATH__) \
        const char * const __RESOURCE_NAME__ = __RESOURCE_PATH__;
     
     
    #define NEW_BUTTON(__BUTON_NAME__, __NORMAL__, __SELECTED__, __DISABLED__) \
        BEGIN_GROUP(__BUTON_NAME__)    \
            NEW_RESOURCE(normal, __NORMAL__);      \
            NEW_RESOURCE(selected, __SELECTED__);    \
            NEW_RESOURCE(disabled,__DISABLED__);    \
        END_GROUP(__BUTON_NAME__)
     
     
    //------------------------------------------------------------------------------
    // Création de la structure des ressources
    //
    BEGIN_RESOURCES
        BEGIN_GROUP(fonts)
            NEW_RESOURCE(game_typo, "fonts/game_typosletters_nogrid.png");
            NEW_RESOURCE(arista_2, "fonts/arista_2/arista_2.fnt");
        END_GROUP(fonts)
     
        BEGIN_GROUP(images)
            BEGIN_GROUP(backgrounds)
                NEW_RESOURCE(blue, "images/background_blue.png");
            END_GROUP(backgrounds)
     
            BEGIN_GROUP(buttons)
                NEW_BUTTON(
                           back,
                           "images/button_back_normal.png",
                           "images/button_back_selected.png",
                           0);
                NEW_BUTTON(
                           game_normal,
                           "images/button_game_normal_normal.png",
                           "images/button_game_normal_selected.png",
                           0);
                NEW_BUTTON(
                           game_pro_enable,
                           "images/button_game_pro_enable_normal.png",
                           "images/button_game_pro_enable_selected.png",
                           0);
                NEW_BUTTON(
                           game_pro_disable,
                           "images/button_game_pro_disable_normal.png",
                           "images/button_game_pro_disable_selected.png",
                           0);
                NEW_BUTTON(
                           play,
                           "images/button_play_normal.png",
                           "images/button_play_selected.png",
                           0);
                NEW_BUTTON(
                           reward,
                           "images/button_reward_normal.png",
                           "images/button_reward_selected.png",
                           0);
            END_GROUP(buttons)
     
            NEW_RESOURCE(element_block_green, "images/element_block_green.png");
        END_GROUP(images)
     
     
    END_RESOURCES
    ca coince dès le premier BEGIN_RESOURCES

    J ai essayé de rajouter un attribut static dans la macro NEW_RESOURCE mais ca n'a pas réglé le soucis (meme erreur)

    Une idée?

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 175
    Points : 12 302
    Points
    12 302
    Par défaut
    Ca n'existe pas des Designer sous XCode ?

    Parce que c'est le genre de code bien pourri d'avant VS .NET, où on ne pouvait pas y ajouter son propre Designer.

    En claire, ça m'hérisse le poil ce type de code MFCesque.

    Comme vous ne donnez pas "NEW_RESOURCE" c'est plus à Mm. Irma qu'il faut vous adressez.
    Et selon http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspx
    C'est "static const" et pas static qu'il faut mettre.

  3. #3
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Comme vous ne donnez pas "NEW_RESOURCE" c'est plus à Mm. Irma qu'il faut vous adressez.
    .
    il est la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define NEW_RESOURCE(__RESOURCE_NAME__, __RESOURCE_PATH__) \
        const char * const __RESOURCE_NAME__ = __RESOURCE_PATH__;
    probleme résolu en mettans une fonction initresources() dans un resource.cpp

    je trouve aussi le code assez imbitable, mais a priori on aura plus a y toucher des masses

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 175
    Points : 12 302
    Points
    12 302
    Par défaut
    mais a priori on aura plus a y toucher des masses
    C'est le genre de remarque qui laisse planer un léger doute sur la méthodologie de développement suivi.
    Il faut toujours être capable de revenir sur n'importe quel choix à n'importe quel moment du développement.
    Ne cherchez pas, vous y retoucherez, c'est obligé par la loi de Murphy.

    Mais bon, la définition d'une variable globale "constante" planquée sous une palanqué de MACRO, c'est clair qu'il vaut mieux cacher ça dans un cpp.

    Vous me faite regretter le format .rc et .res des vieux VS.

    Si c'est des ressources, mettez ces trucs dans des fichiers de ressources qui utilisent une syntaxe adaptées, comme les .rc, les .res, voir en XAML.
    En fait, tous, sauf dans du code imbitable et sujet à implosion spontanée au moindre #define dans un obscure include d'un SDK foireux d'un éditeur bordélique.

  5. #5
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    Citation Envoyé par bacelar Voir le message
    C'est le genre de remarque qui laisse planer un léger doute sur la méthodologie de développement suivi.
    mouais ... un développeur a pris l initiative de faire de cette façon, ca présente certains avantages comme l auto completion des resources.

    honnetement j ai vu bien pire niveau code imbitable et la methodologie doit faire avec d autres realités notamment economique et de timing

    et oui je travaille pas vraiment dans un milieu académique désolé messieurs

    et puis maintenant ca compile et j'ai mis résolu.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 175
    Points : 12 302
    Points
    12 302
    Par défaut
    la methodologie doit faire avec d autres realités notamment economique et de timing
    C'est vrai que le temps passé à faire du déverminage est gratuit dans votre industrie.

    Sortez la tête du guidon, et regardez un peu les méthodologies actuelles, ou vous serez condamné à faire toujours les mêmes bêtises, tel un Sisyphe.

    Exemple : Méthodologies Agiles, TDD, etc...

    un développeur a pris l initiative
    Dans un an, ça sera la faute d'un stagiaire qui est parti.

  7. #7
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    aie aie aie que de conclusions vite tirées !

    Il vaut mieux pas que je montre le thread au développeur en question sinon on est parti pour un débat qui va durer 7 ans

    merci pour l'aide en tout cas, je retourne à mon guidon de ce pas

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

Discussions similaires

  1. [VB6] Compile error: Invalide use of New Keyword
    Par ironik dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 16/05/2006, 12h40
  2. [VB6]Compil error: can't find project or library
    Par riesseg dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 03/05/2006, 22h28
  3. [vba][Array]pb compile error
    Par megapacman dans le forum Access
    Réponses: 2
    Dernier message: 18/03/2006, 09h24
  4. Réponses: 12
    Dernier message: 26/01/2006, 14h51
  5. compilation error
    Par lion1 dans le forum MFC
    Réponses: 6
    Dernier message: 19/10/2005, 16h56

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