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

J´aide les personne en C/C++

Lapintade
Lapintade
Niveau 30
18 novembre 2006 à 00:27:30

==> (compile en C)

En C tu dois declarer tes variables en debut de block.

ton "int test;" en plein milieu ca ne peut pas compiler en C.

Ca serait ok en C++.

Ptival
Ptival
Niveau 10
18 novembre 2006 à 00:36:25

Ah bon...O_o

Rah ça fait du mal de se remettre au C après avoir fait longtemps des trucs en C++ ^^

Bah d´accord si tu le dis, je vais changer ça alors =3

Lapintade
Lapintade
Niveau 30
18 novembre 2006 à 00:49:44

:)

Si jamais tu veux vraiment declarer ton int en plein milieu d´une fonction, il te faut ouvrir un block avec { }.

void ma fonction()
{
int endebut;

blabla

{
int aumilieu
blabla
}

blabla

}

dnob700
dnob700
Niveau 10
18 novembre 2006 à 01:17:35

mais pourquoi lui dire de compiler en C plutôt qu´en C++ ? SDL passe très bien en C++ (à la limite, je me demande s´il n´est pas bourré de extern "C" justement pour ça).

d´autre part, ton /NODEFAULTLIB:library ne me semble pas utile, voire génant (il va te manquer plein de truc au linkage). Sans compter que là, tu ne link pas avec SDL, mais ça ça apparait aprs la compil comme tu le sais.

Enfin, pour SDL, tu devrais utiliser des Console project plutot que des win32. Car le point d´entrée de ton programme sera dans la bibliothèque SDLmain avec le nom main, alors qu´en win32 le linker peut s´attendre à ce qu´il s´appelle WinMain (ça se redéfinit dans les option). C´est un point très tordu de la SDL sous windows (l´un de ceux qui font que je le n´utilise pas).

elhuron
elhuron
Niveau 6
19 novembre 2006 à 14:18:17

J´ai entendu dire que l´on pouvait programmer sur DS en C, et pas en C++.
J´ai tord j´espere ?

godrik
godrik
Niveau 30
19 novembre 2006 à 14:35:58

du moment que tu peux produire du code pour ARM7 et ARM9 la console se fout completement du langage de base.
gcc sait exporter en ARM7 et ARM9. cela veut probablement dire que l´on peut exporter sur DS n´importe quel code compilable par gcc.
Donc probablement que l´on peut ecrire du caml ou du java pour DS... :)

godrik
godrik
Niveau 30
19 novembre 2006 à 14:40:44

... (si ca rentre en mémoire)

elhuron
elhuron
Niveau 6
19 novembre 2006 à 14:42:51

Ouf :)
Merci!

Lapintade
Lapintade
Niveau 30
19 novembre 2006 à 16:04:36

Je programme sur DS en ce moment, en C++.

elhuron
elhuron
Niveau 6
20 novembre 2006 à 19:33:59

:) Tu t´es donc mit au C++.

Dans le monde professionnel de la programmation (jeux, logiciels...) entre le C et le C++, lequel est le plus utilisé ?

j´ai une autre petite question :

char *chaine = new char[50];
...
delete chaine;

New permet d´allouer de la memoire dynamiquement.
Et ca consiste en quoi ?

dnob700
dnob700
Niveau 10
20 novembre 2006 à 22:46:14

ça consiste à dire au système d´exploitation : "voilà, j´ai besoin de tant de mémoire" (ici 50 octets). "Trouve moi tout de suite!"

Le système renvoie donc un pointeur vers une zone de mémoire qui peut stocker 50 octets, et il se souvient que ces 50 octets sont utilisé (jusqu´à l´appel de new avec le pointeur en question).

En réalité, ce n´est pas le système qui gère ça (ou pas forcément), mais ça ne change rien.

elhuron
elhuron
Niveau 6
20 novembre 2006 à 23:10:57

Merci beaucoup.
Mais je me demande quand il faut l´utiliser ce new. Lorsqu´on est pas sur d´avoir la memoire demandée ?

dnob700
dnob700
Niveau 10
21 novembre 2006 à 00:39:14

tu doit utiliser new quand tu as besoin d´une certaine quantité de mémoire qui n´était pas prévisible à la compilation : si tu sais que ton tableau doit faire 50 case, alors tu fait :

int tableau[50];

mais situ ne sais pas combien il doit faire de cases, tu utilise new :

cin >> i;
int* tableau = new int[i];

godrik
godrik
Niveau 30
21 novembre 2006 à 12:02:38

J´ai lu au dessus:

char *chaine = new char[50];
...
delete chaine;

ATTENTION. a la fin, tu ne désalloue mal le tableau!!
il faut faire delete[] chaine; pour le désallouer correctement.

En passant, je crois que la déclaration de variable n´importe ou dans un bloc est valide en C99. (a confirmer)

trunks_the_boss
trunks_the_boss
Niveau 9
21 novembre 2006 à 18:16:17

:salut: vous pouvez m´aider a trouver un truc pour apprendre le C++ SVP? (appart NGCK)

:merci:

godrik
godrik
Niveau 30
21 novembre 2006 à 18:18:56

je vais dire google mais on va me traiter d´aigri! :)
http://casteyde.christian.free.fr/cpp/cours/online/book1.html
(found on google)

Ptival
Ptival
Niveau 10
21 novembre 2006 à 21:06:55

godrik -> Oui j´ai fait une petite recherche après vos indications et apparemment ce problème ce pose en C90 mais pas en C99...

Dev-C++ respecte la C99 sûrement, vu qu´il me semble avoir déjà déclaré n´importe où avec...Là à ma première utilisation de VC je savais pas du tout pour cette norme :p

elhuron
elhuron
Niveau 6
21 novembre 2006 à 22:36:55

Merci godrik et dnob700 :-)

elhuron
elhuron
Niveau 6
22 novembre 2006 à 18:28:57

Bonsoir.

J´ai pratiqué mes connaissances actuelles en C++ en faisant une classe Image sous SDL.
Tout fonctionne bien, sauf la conexion entre les diferents fichiers.

Je possede 3 fichiers :

main.cpp (j´inclue SDL puis ressource.h, le main)
ressource.cpp (j´inclue ressource.h, creation la classe Image...)
ressource.h (#ifndef.., prototype de la classe, c´est a dire class Image;)

J´arrive a faire fonctionner ce systeme quand il n´y a que des fonctions. Mais pour gerer les structures et classe de cette maniere, il y a une erreur a chaque creation d´instance de classe :

Image fond("image.bmp");
Image balle("balle.bmp", 1, 255, 200, 200);

error : variable ´Image fond´ has initializer but incomplete type
(pour chacune d´elle)

Sachant que j´ai pas modifier cela avant le partage de fichiers.

Merci de m´aider :)

Fvirtman
Fvirtman
Niveau 10
22 novembre 2006 à 18:34:18

Tu as inclus le .h ou tu as ta classe Image ?
Wall ton code sinon.

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