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 ?
normalement en C++ ca marche mais tu dois compiler en C je pense . ..
tente ca plutôt :
typedef enum
{
type1,
type2,
type3
} TYPE;
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.
typedef enum
{
Lundi,
Mardi,
Mecredi,
Jeudi,
Vendredi,
Samedi,
Dimanche
} JourDeLaSemaine;
JourDeLaSemaine today( void )
{
return Lundi;
}
compile sans aucun probleme
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.
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.
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.
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.
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
kUfa : il est NUL ton exemple, il marche qu´un jour par semaine :D mouahahaha
![]()
Euh... LGV jsuis désolé de te demander ça, mais tu pourais vnir sur la précision infinite stp? ![]()
lgv: nan, si tu considere mon nombre de nuits blanches.. ; )
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 ![]()
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 ?
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
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.........
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? ![]()
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" {}...
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.
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