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

o secours mon compilateur bug a mort

final-hearts
final-hearts
Niveau 10
10 janvier 2006 à 12:55:55

voici le lien de l´image
:http://img202.imageshack.us/img202/6527/regardezm
oncompil5xe.png

jacman
jacman
Niveau 11
10 janvier 2006 à 12:57:30

le lien, tu l´as mal mis !! !

final-hearts
final-hearts
Niveau 10
10 janvier 2006 à 12:59:00

http://img202.imageshack.us/img202/6527/regardezmoncompil5xe.png

jacman
jacman
Niveau 11
10 janvier 2006 à 13:00:35

désolé, je peux pas t´aider, mais espérons que tu trouve

Lapintade
Lapintade
Niveau 30
10 janvier 2006 à 13:42:15

essaies

int main()

au lieu de

void main()

Lapintade
Lapintade
Niveau 30
10 janvier 2006 à 13:42:40

Et en general c´est pas le compilo qui bug, c´est l´utilisateur qui tape n´importe quoi :)

JeanYvesYves
JeanYvesYves
Niveau 10
10 janvier 2006 à 13:54:42

En effet, la norme veut que le main retourne un int.

Pour certains compilos, void main est toléré, mais pas pour le tien :)
Pire, pour SDL par exemple, la norme t´impose d´utilise :

int main(int argc,char** argv)

dnob700
dnob700
Niveau 10
10 janvier 2006 à 19:15:10

la c´est pas la norme mais la connerie des développeurs de la SDL.

On voit facilement qu´il s´agit d´une connerie : il suffirait que deux lib se paye le luxe d´une gestion aussi affreuse que la SDL pour qu´elle ne puissent plus être utilisées toutes les deux ensembles, preuvent que c´est un mauvais système.

Pour info, pour ce qui ne sont pas au courant : l´un des en-tête de la SDL définit une macro du type :

  1. define main autre_nom_pour_main

et l´un des fichier bibliothèque de la SDL contient une fonction qui s´appelle main. C´est celle là qui est utilisé par le linker comme point d´entrée du programme. Puis à la fin, elle appelle autre_nom_pour_main qui est le nouveau nom de votre fonction main puice qu´il a été remplacé pas le précompilateur.

Donc, si deux lib font la même chose, ça ne marche plus, mais pire, si vous n´utilisez que la SDL mais pas dans votre fichier .cpp principale, mais uniquement dans un fichier qui gérerait le moteur graphique par exemple et qui vous n´incluez pas sdl.h dans le fichier qui contient votre fonction main, ça ne marche plus non plus.

(vous l´aurez compris, je n´aime pas la SDL.)

guyver2
guyver2
Niveau 10
10 janvier 2006 à 20:13:22

desolé dnob mais tu t´enflame, et étant un adepte de SDL je me dois de te contredire. J´ai fais un prog en C sous linux et le fichier contenant la fct main n´inclus pas sdl.h, mais c´est bien un autre fichier qui inclus sdl et qui s´en sert de maniere autonome.
Je sais pas si c´est tres clair...

Moule53
Moule53
Niveau 10
10 janvier 2006 à 21:28:45

Faut ptet pas oublier de mettre std:: devant cout ou bien taper using namespace std; au debut du code.

dnob700
dnob700
Niveau 10
10 janvier 2006 à 22:05:20

guyver2 : sous linux ça marche peut-être, je ne sais pas comment c´est géré, mais je peut t´assurer que sous windows (en tout cas avec VC++, mais je suis quasiment sûr que ça ne va pas non plus avec dev c++) ce n´est pas possible.

guyver2
guyver2
Niveau 10
10 janvier 2006 à 22:25:23

je ne pense pas que l´OS change quoi que ce soit car le fichier sdl.h que j´inclus vient de ma partition windows (donc on doit retrouver les memes macros). Par contre lors de la compilation j´imagine que les fichiers linker sont differents. Ca vient peut-etre de là ? Malheureusement je ne peux pas tester mon prog sous windows car il utilise plein de pthread et autres fork. donc en fait ça va juste donner une discussion stérile. Et ayant moins d´experience que toi en prog et n´étant pas modérateur du forum de programmation je pense que tu sais de quoi tu parle.

Julio_75
Julio_75
Niveau 9
10 janvier 2006 à 22:27:14

Y a pas une deuxième include ? Tu sais la ligne en haut ?
Enfin, je suis pas prog´ mais quand ça ne marche pas, c´est que tu as tapé une connerie, a toi de voir :ok:

guyver2
guyver2
Niveau 10
10 janvier 2006 à 22:43:20

je ne fais pas de c++ (uniquement du c) mais c´est pas

  1. include <iostream>

au lieu de

  1. include <iostream.h>

je dis ça par rapport au 1er tuto de JY²:
http://perso.numericable.fr/~fvirtman/info/tuto/1_01_hello.cpp

dnob700
dnob700
Niveau 10
10 janvier 2006 à 23:20:19

guyver : J´ai vérifié, ça vient bien du changement d´OS : ouvre le fichier SDL.h, il inclue le fichier SDL_main.h.

Tu verras que ce fichier contient la ligne :

  1. define main SDL_main

Seulement elle est protégée par des test du préprocesseur dans le genre #if defined(win32) ...
avec toute une liste de systèmes, mais pas de linux (quoi que je ne sais pas sous quel nom est-ce qu´il devrait apparaitre dans cette liste).

Au passage, peut-tu me dire si tu doit linker tes programme avec sdl_main.a, ou seulement avec sdl.a ?

guyver2
guyver2
Niveau 10
10 janvier 2006 à 23:51:54

pour linker j´ai du mal a comprendre ce qu´il faut vraiment. donc j´ai -lSDL -lSDL_main -lSDL_iamge

guyver2
guyver2
Niveau 10
10 janvier 2006 à 23:53:37

et merci de tes explications; c´est le genre de chose que je comprend quand on me les met sous le nez mais pour ce qui est de les trouver tout seul c´est une autre histoire.

JeanYvesYves
JeanYvesYves
Niveau 10
11 janvier 2006 à 08:49:06

Il est vrai que la définition de "main" dans SDL est tres exotique sous Windows :)
En fait, le but est d´avoir la meme syntaxe que sous linux pour amorcer l´OS.
Sous Windows, il y a moulte précautions a prendre pour faire de la prog graphique, et c´est ce que fait la fonction SDL_main, avec, par exemple, un appel explicite a : SDL_SetModuleHandle qui est du pur windows.h

Sam Lantinga a planqué ça comme il a pu dans SDL, lol !
Il est vrai que c´est assez exotique :)

Cependant, ce que j´aime bien moi dans SDL, c´est la simplicité d´utilisation, les extentions utilisées, la gestion simple des périphériques et evenements (d´acc, beaucoup n´aiment pas pollevent), et le fait que ça remplace largement glut pour OpenGL :-)

Mais les gouts et les couleurs comme on dit !

JeanYvesYves
JeanYvesYves
Niveau 10
11 janvier 2006 à 08:51:25

Sinon, je confirme, sous Linux, le "std" est implicite :

tu peux utiliser cout avec iostream sans forcément préciser std.
faut voir si ça fait pareil avec les stl :

est ce que qq un peut essayer, sous nunux, d´utiliser une map, list ou vector, sans utiliser de std ?

godrik
godrik
Niveau 30
11 janvier 2006 à 14:51:31

mandan:~/test> cat test2.cpp

  1. include <list>

int main ()
{
list<int> l;
return 0;
}
mandan:~/test> make test2.o
g++ -c -o test2.o test2.cpp
test2.cpp: In function ´int main()´:
test2.cpp:5: erreur: ´list´ was not declared in this scope
test2.cpp:5: erreur: expected primary-expression before ´int´
test2.cpp:5: erreur: expected `;´ before ´int´
make: *** [test2.o] Erreur 1

voici pour JYY!!

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