1

alors voila, c'a peu paraitre tordu comme question mais j'aimerais savoar si c possible de passer en argument d'1 fonction un type, genre short,char,long,int,handle ....
comment on le declare ds la declaration d'1 fonction?
NTW !!!!!

2

confus je comprend pas trop, et ça te servirai a quoi (si j'ai compris)
http://membres.lycos.fr/pingooz/
Un cafe et deux sucres

3

c'est si incomprehensible que ca hum ???? bon je reformule en faisant gaffe a l'orthographe

j'ai besoin dans ma fonction de creer une variable, mais le type de cette variable on le connait pas ds la fonction,
donc ma premiere idee fut de mettre en argument de la fonction la taille de la variable , pour l'appeler on faisait juste mafunctiun(sizeof(type)) puis je met ma variable de type void * et je la cree a laide d'1 malloc,
mais ce ne plait guere, je me demande donc si on peut faire une fonction qui accepterait dans un de ses arguments un type, donc pour l'appeler on fait mafunction(short) par exemple

mais je ne vois pas comment declarer une telle fonction ...
NTW !!!!!

4

en C je ne suis pas sûr que ça soit possible ...
tu peux faire une enum e_TYPE {CHAR, SHORT, ...} etc et passer ça en paramètre, et faire un switch dessus après.
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

5

ou sinon avec une macro qui créé du code spécifique pour le type passé en argument
par exemple :
#define quarantedeux(type) (type)42
ca renvoit 42 casté selon le type voulu

(bon, c'est un exemple, hein, tu peux faire des choses plus compluqués dans ta macro triso)
avatar

6

Tu ne peux pas faire ça en C, sauf avec des hack genre ce qu'a dit Nu ou en faisant un fichier que tu inclus pour chaque type différent, par exemple :
#define T short
#include "myfunc.c"
#undef T
#define T long
#include "myfunc.c"
#undef T
etc...

Ca n'existe qu'en C++...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

7

et puis est ce que dans ta fonction tu ne peux pas te contenter de caster la variable à la fin
ca serait surement plus simple
avatar

8

Oui, tout dépend de ce que tu veux faire dans ta fonction... Si tu veux faire un truc genre "min" ou "max", la méthode de Nu doit être plus adaptée, sinon tu peux p-ê t'en sortir avec des cast et des alloca...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

9

euh ... ca veut dire quoi "caster" ??? confus

sinon j'ai cherché un peu et g trouvé la fonction __builtin_types_compatible_p(type1,type2)

mais apres je comprend pas ce que tu fais pollux , comment j'appelle ma fonction apres ??
NTW !!!!!

10

pardon
"caster", c'est convertir une variable d'un type vers un autre

par exemple :
char a;
short b;
b = (short) a;

là tu castes la valeur en a en short
(on dit aussi transtyper, mais je sais pas pourquoi, je préfère le dire caster cheeky )
avatar

11

ah bon, ca s'appeler le castage ???

sinon ,j'ai fait comme a dit ximmon, et ca marche a merveille ,merci beaucoup les mecs top
NTW !!!!!

12

euh.. g une autre question , les structure, ca marche comme les classes du c++, y'a du public et du private ? et on peut faire de fonctions membres, des construcuteurs et tou et tou?
NTW !!!!!

13

non, pas en C, les contructeurs/destructeurs classes ...etc sont seulement appliquables au C++, ainssi que certianes liberté de declarations (comme les surdefinitions par ex)
http://membres.lycos.fr/pingooz/
Un cafe et deux sucres

14

pourquoi ca ne marche pas ca???
typedef struct 
{
unsigned char data[200];
short ptr;
char name[18];
}FILELIST ;
FILELIST f1;
FILELIST *f=&f1;
f->ptr=3;//parse error before '->' token

je comprend pas là... confus
NTW !!!!!

15

aucune idée, mais je crois que tu peut faire aussi
FILELIST *f = malloc(sizeof(FILELIST));
f->ptr=3;
...
free(f);
mais je n'en suis pas sur
http://membres.lycos.fr/pingooz/
Un cafe et deux sucres

16

FILELIST *f = (FILELIST*)malloc(sizeof(FILELIST));

17

c'est necessaire le (FILELIST *) devant, vu qu'on a defini le type de f comme FILELIST
ou sinon
void *f=(FILELIST *)malloc(sizeof(FILELIST)),
http://membres.lycos.fr/pingooz/
Un cafe et deux sucres

18

matthieu> tu es à l'intérieur d'une fonction ou pas ?

JackosKing> non, ça ne sert à rien... (à part rendre le code moins lisible)

Pingoo> trifus Là ça sert encore plus à rien tongue

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

19

pingoo>> ca marche pas, tigcc me dit : "initializer element is not constant", il a fumé ou quoi??? ds ma structure, les taille sont constantes non?
jakosking vnr>>il me donne la meme erreur
NTW !!!!!

20

ou sinon...
void *f=malloc(sizeof(FILELIST)),
(FILELIST*)f->ptr =3;

21

matthieu> Mets ça dans une fonction, ça ira tout de suite mieux trigic

Jackos> quel est l'intérêt ?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

22

pollux >> non c une structure "globale"
NTW !!!!!

23

J'ai pris l'habitude de caster meme si ce n'est pas utile, car en C++ ca ne passe pas il me semble (warning voir error sous VC++ non?)

24

Mais mets le code (avec le malloc) dans une fonction tongue

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

25

Jackos> en C++ ça ne passe pas (erreur), mais en C++ tu as des trucs bien plus adaptés smile en C, c le seul moyen, donc mieux vaut éviter d'alourdir inutilement...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

26

t'essayait de definir tout ça en global ?? a merde, je croyait qu'il était dans une fonction smile
http://membres.lycos.fr/pingooz/
Un cafe et deux sucres

27

oui, il y a newtongue mais bon il m'arrive de programmer C only avec un compilo C++ d'où les habitudestongue

28

a oué ca marche ds une fonction !! .... confus juste avec malloc
c un peu bizzare tous ca ...hum
mais chuis obliger de la declarer en "globale" vu que toutes mes fonctions l'utilise
NTW !!!!!

29

JackosKing> arf ^^

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

30

matthieu> parce qu'il faut du code pour initialiser la variable avec malloc(), et il faut que le code en question se trouve dans une fonction...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)