CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Erreur de compilation étrange avec VC++

lag-it
lag-it
Niveau 10
12 novembre 2005 à 01:03:51

Je rencontre une erreur de compilation assez étrange avec visual C++ 2002.
Elle concerne une portion de code définissant une structure dont l´une des données membres est une variable d´énumération "Sprite" définie dans un header inclu.

Apparement Visual studio reconnait par faitement le type Sprite, comme montré sur le screen suivant :

http://img464.imageshack.us/img464/4192/10fn.png

Néanmoins à la compilation, j´obtiens les erreurs suivantes, portant sur la ligne contenant la définition de ma variable Sprite et la suivante avec le };

http://img464.imageshack.us/img464/5013/25dg.png

Je ne vois vraiment pas d´où vient le problème...
(quand à la ligne au dessus de "Sprite...", il s´agit de "void *isOver;")

lag-it
lag-it
Niveau 10
12 novembre 2005 à 11:35:59

Je rajoute le code de mon énumération de Sprite :

typedef enum enSprite
{
// ...
}
Sprite;

Le plus beau, c´est que mon problème est résolu si, dans mon code précédent, je remplace "Sprite" par "enum enSprite".
Pourtant j´ai bien mis un typedef... et je me sert de "Sprite" ailleurs...

kufa
kufa
Niveau 9
12 novembre 2005 à 14:23:07

Tu es sur qu avec les #ifdef des .h le typedef est bien interprete avant son utilisation?

/kufa

lag-it
lag-it
Niveau 10
12 novembre 2005 à 14:41:55

Oui, le .h ressemble à ca :

  1. ifndef SPRITE_H
  2. define SPRITE_H

// ...

typedef enum enSprite
{
// ...
}
Sprite;

// ...

  1. endif
lag-it
lag-it
Niveau 10
12 novembre 2005 à 16:21:58

Apparement ce problème ne concerne que les .h, vu que lorsque je défini un prototype de fonction dans un .h, j´obtien une erreur en utilisant la version typedefée (Sprite), mais rien avec enum enSprite, alors que dans la définition de la fonction dans le .c, je peux utiliser Sprite normalement.

Je suppose qu´il y a un truc que je fais pas bien...

LGV
LGV
Niveau 28
12 novembre 2005 à 17:07:15

as-tu essayer de virer le typedef (facultatif en C++), pour avoir qqch comme ca :

enum Sprite
{
...
};

ca n´explique pas le pb, mais il serait interessant de voir si cela passe.
Au passage, j´ai eu pas mal de soucis avec le compilo du 2002 (ooh les statics de templates qui passent pas...) ; tout a ete resolu avec le 2003 : si tu peux evoluer (et tu peux vu que VC++ 2005 est maintenat dispo ;) ), je te le conseille.

lag-it
lag-it
Niveau 10
12 novembre 2005 à 18:06:23

Je voulais faire ce projet en C pur, c´est pourquoi j´avais utilisé les typedefs.

Ca fonctionne parfaitement si je remplace Sprite par enum enSprite... ce qui est quand même très éttonant.
Et je ne rencontre ce problème de typedef qu´avec des enum.
Avec des struct, ca passe impec.

Dans certains de mes fichiers source, je peux utiliser Sprite directement et dans d´autres non. Vraiment très bizarre...

dnob700
dnob700
Niveau 10
12 novembre 2005 à 21:27:35

Si ça se trouve VC++ fait n´importe quoi en matière de C.

Ils disent qu´ils respectentbien la norme du C++ (ANSI), mais à propo du C, on n´en sait rien.
Ca pourrait expliquer ton problème si c´est juste le compilo qui n´est pas bon.

Tu as essayé de compiler ton code avec gcc par exemple ?

lag-it
lag-it
Niveau 10
12 novembre 2005 à 21:29:05

Non, il faudrait que je teste...

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment