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

[C/C++] fonction et enum

dnob700
dnob700
Niveau 10
25 octobre 2004 à 19:54:10

ma question du jour est simple, une fonction peut-elle être un enum ?

un bout de code dans le genre ne marche pas :

enum TYPE
{
type1,
type2,
type3
};
TYPE fonction(long arg)
{
. ..
return type2;
}

mais y a-t-il une manière de procéder, ou bien est ce qu´il faut déclarer ma fonction comme int et renvoyer la valeur d´une variable qui aurait du type TYPE ?

Altonfrere
Altonfrere
Niveau 10
25 octobre 2004 à 20:02:06

normalement en C++ ca marche mais tu dois compiler en C je pense . ..

tente ca plutôt :

typedef enum
{
type1,
type2,
type3
} TYPE;

dnob700
dnob700
Niveau 10
25 octobre 2004 à 21:18:11

je compile bien en C++, mais il me fait toujours des erreurs même avec cette méthode ( il veut des int des ´;´ et plein d´autre truc).

c´est pas grave, je vais utiliser des int.

kufa
kufa
Niveau 9
25 octobre 2004 à 23:40:35

typedef enum
{
Lundi,
Mardi,
Mecredi,
Jeudi,
Vendredi,
Samedi,
Dimanche
} JourDeLaSemaine;

JourDeLaSemaine today( void )
{
return Lundi;
}

compile sans aucun probleme

dnob700
dnob700
Niveau 10
25 octobre 2004 à 23:58:21

effectivement, chez moi aussi, tout à l´heure il me faisait de erreur, mais il devait yavoir un problème dans mon code que j´ai pas vu.

merci.

dnob700
dnob700
Niveau 10
26 octobre 2004 à 01:01:02

Puice qu´on en est là, quelqu´un serait-il pourquoi ça plante ?
LPDWORD Info;
long
result=RegCreateKeyEx(Base,KeyName,0,NULL,REG_OPTI
ON_NON_VOLATILE,Option,NULL,KeyPtr,Info);
if ( result==ERROR_SUCCESS)
{
if ( *Info==NULL) return ERROR_SUCCESS_UNKNOWN;
le if me fait un access violation reading. c´est logiquement impossible puiceque Info existe, il est déclaré statiquement, son adresse existe et la fonction ne peut pas la modifier, alors je ne comprend pas comment c´est possible qu´il y ait un problème à l´accès.

LGV
LGV
Niveau 28
26 octobre 2004 à 01:20:00

ton LPDWORD n´est pas initialisé sur une adresse mémoire valide ; ton type primitif est joyeusement initialisé à 0 ( garanti en debug, variable en release...)
au passage on notera que NULL est un #define 0. Tout ça mis bout à bout, tu fais donc gaillardement un déréférencement de NULL avec ton *Info...
Maintenant que tu sais d´où ça vient, tu peux corriger ; au passage, le debugger c´est un outil pratique... Sinon il reste toujours les premiers chapitres de ton ouvrage C++ favori.

dnob700
dnob700
Niveau 10
26 octobre 2004 à 01:23:39

mais ça voudrait dire qu´il faut faire :

LPDWORD Info;
Info=new unsigned char;
avant de s´en servir ?

bon, j´ai remplcé le LPDWORD par un unsigned char directement, c´est aussi simple, de toute façon c´est la même chose mais comme ça au moins, je vois bien à quel niveau d´indirection on en est comme dirait mon compilo.

LGV
LGV
Niveau 28
26 octobre 2004 à 01:37:11

hmmm... " la meme chose"... pas *VRAIMENT* en fait

LPDWORD étant un long pointer sur un dword, on deduit aisément ( normalement...) que c´est un unsigned int * derriere... Si t´as du mal avec les types, jette un oeil aux __int8/16/32 ( voire 64, je te passe les __m128 et variantes), avoir en tete la tailles des données aide beaucoup.

le coup du new, vi, ça peut etre utile... Disons que c´est une solution, selon ce que tu veux faire.

Regarde quand meme la MSDN pour voir les types définis pas windows.h . .. ça *peut* aider

LGV
LGV
Niveau 28
26 octobre 2004 à 01:59:16

kUfa : il est NUL ton exemple, il marche qu´un jour par semaine :D mouahahaha

MathieuN7
MathieuN7
Niveau 10
26 octobre 2004 à 02:01:43

:rire:
Euh... LGV jsuis désolé de te demander ça, mais tu pourais vnir sur la précision infinite stp? :hap:

kufa
kufa
Niveau 9
26 octobre 2004 à 02:13:14

lgv: nan, si tu considere mon nombre de nuits blanches.. ; )

MathieuN7
MathieuN7
Niveau 10
26 octobre 2004 à 02:15:48

oh le plouc, j´ai fait une big faute d´ortho:

Euh... LGV jsuis désolé de te demander ça, mais tu pourais vnir sur la précision infinie stp?

Voilà c mieux :-p

LGV
LGV
Niveau 28
26 octobre 2004 à 02:18:40

mathieuN7 : nan nan, kUfa est déjà passé par là, et je suis d´accord avec ce qu´il y a dit : faut replacer dans le contexte, et la précision ont en a généralement assez. Sinon pour l´autre qui veut calculer ses décimales, pas besoin de ça, une décomposition itérative par, disons, puissance de 10000, et ça fait l´affaire. Plutot que calculer avec plus de précisions, mieux vaut reconditionner son systeme pour que celle qu´on a soit plus significative.

kUfa : vu comme ça ; ) t´as dépose un brevet pour la journée de 96h ou c´est en cours ?

MathieuN7
MathieuN7
Niveau 10
26 octobre 2004 à 02:24:12

LGV -> donc je dois arrêter la classe?
Mais bon ça ne me dis pas comment je peux utiliser une classe qqconque écrite en C++ dans un prog en C...

ben merci de ton aide, jvais me coucher pr la peine ciao tout le monde

LGV
LGV
Niveau 28
26 octobre 2004 à 02:36:53

ben oui... et demain on explique comment faire passer du fortran dans un compilo ada, si si...........

mais *OU* vous allez chercher des trucs pareils ? !

lisez un peu les docs des compilos par exemple, tripotez un peu d´ASM, expérimentez pour COMPRENDRE pourquoi ce que vous demandez est absurde :/

Tu veux utiliser du code C++ dans un prog C ; facile ! tu écris ta VM en C qui relit le name mangling du C++ et c´est fini....... Tu peux aussi regarder le code de la JNI ou les sources de Q2 pour t´inspirer, mais c´est vraiment si tu sèches hein.........

MathieuN7
MathieuN7
Niveau 10
26 octobre 2004 à 02:50:47

put1 mais quelle méchanceté gratuite...
Ici:
https://www.jeuxvideo.com/forums/1-31-8321096-1-0-1-0-0.htm

T´as dit ça:
"LGV
Posté le 18 octobre 2004 à 23:46:55
haut niveau ? un coup de précompilo pour remplacer tous les public/protected/private par rien du tout, et je vais te le faire compiler moi ton code ; ) LOOOOL ( et encore...)
mais c´est ça qu´est marrant : feinte ici, feinte là, feinte par là-bas, feinte dans le coin, etc. On n´en finit pas :D"

Alors moi je me suis dit "si LGV dit qu´on peut le faire, alors jvais chercher un peu..." mais g pô trouvé, ça marche pas...

Alors je redemande à LGV, et tu m´envoies balader com une merde... C pas le mm LGV qui poste sur cdj et sur prog? :sarcastic:

kufa
kufa
Niveau 9
26 octobre 2004 à 02:56:52

Mathieu, je te remercie, tu rends ma nuit blanche au taf bien plus amusante :)

" haut niveau ? un coup de précompilo pour remplacer tous les public/protected/private par rien du tout, et je vais te le faire compiler moi ton code ; ) LOOOOL ( et encore...) "

Tu n as donc visiblement PAS compris l ironie de cette phrase :)
Moi et lgv ont t´a pourtant bien dis qu´inclure des fonctionalites C++ non exportables dans du C c´est pas de ton niveau, et c´est completement con. Je t´ai meme donne un exemple de comment faire le contraire avec les extern " C" {}...

LGV
LGV
Niveau 28
26 octobre 2004 à 02:57:14

si si, c´est bien le meme... mais quand on voit pas où est l´ironie, j´y peux rien... Quand je réponds à kUfa sur des trucs tordus, on se comprend tres bien, parce qu´on sait ce qui tient du faisable... Maintenant si on interprete tout au 1er degré, qu´est-ce que tu veux que je dise :/

maintenant si tu veux savoir POURQUOI ça marche pas ou comment ça pourrait marcher, je t´encourage à poursuivre tes lectures...

C´est pas la méchanceté, mais quand je vois qu´un LPDWORD est mal interprété ( alors que le nom se veut self-explanatory), ou que visiblement on ne saisit pas ce qui se trame derriere les technos, ben je me dis que ça manque d´initiative personnelle pour aller vers la compréhension.

MathieuN7
MathieuN7
Niveau 10
26 octobre 2004 à 03:05:07

ben jsuis désolé, mais j´avais pas vu ton "ironie", et puis stp évite d´ironiser qd un noob te demande de l´aide...
Bon ben jremballe mes classes de merde et pi jvais dormir...
Put1 ça fait 2 jours que je code pour des prunes

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