bonjour Emmanuel Delahaye,
Merci pour cette réponse de qualité, encore une fois,
quand on fait ceci cela signifie quoi ? pourquoi il y a t-il une virgule après free() ?Code:free (tab), tab = NULL;
Version imprimable
bonjour Emmanuel Delahaye,
Merci pour cette réponse de qualité, encore une fois,
quand on fait ceci cela signifie quoi ? pourquoi il y a t-il une virgule après free() ?Code:free (tab), tab = NULL;
J'applique le principe que j'énonce ici : http://emmanuel-delahaye.developpez.....htm#pointeursCitation:
Envoyé par oranoutan
J'aurais pu écrire :Citation:
Envoyé par -ed-
Mais mon indenteur aurait rétabli la présentation enCode:free (tab); tab = NULL;
Ce qui peut laisser croire qu'on a le droit de mettre quelque chose entre les deux instructions.Code:
1
2 free (tab); tab = NULL;
Ce qui serait évidemment une grosse ânerie...Code:
1
2
3 free (tab); printf ("%s\n", tab[0]); tab = NULL;
L'écriture sur une ligne avec la ',' rend l'insertion moins facile (bien que techniquement possible). Disons qu'on est moins tenté de faire une bêtise... Visuellement, on sent qu'on a affaire à une sorte d'instruction unique qu'il ne faut pas chercher à modifier... Tout cela reste assez subjectif, mais ça marche...
re ED,
j'essaie d'installer ton module SYSALLOC, les entêtes suivantes :
- bits.h
- cnt.h
- cnt_err.itm
- mem.h
- pc_dbg.h
ils ne sont pas dans la libc, ou es ce que je peux les trouver ?
Tout est dans CLIB : http://emmanuel-delahaye.developpez.com/clib.htmCitation:
Envoyé par oranoutan
arf étourdis.
par contre ca compile pas problème de déclaration :
test3.c:15: undefined reference to `sys_mem_init'
test3.c:19: undefined reference to `sys_mem_trace'
j'ai bien ajouté le #include "ed/inc/sysalloc.h"
As-tu bien ajouté tous les .c au projet comme indiqué dans le mode d'emploi ? Tu n'as jamais fait de projet avec compilation séparée ?Citation:
Envoyé par oranoutan
oui j'ai bien ajouté les .c dans ed/src
oui j'ai appris à faire de la compilation séparée juste hier, ils faut donc compiler les fichiers sources séparement?
Il faut surtout créer un projet. Tu compiles avec quoi ?Citation:
Envoyé par oranoutan
gcc
Tu utilises un IDE ou make ?Citation:
Envoyé par oranoutan
Ide
Alors tu crées un projet 'console' en C et tu ajoutes tous les fichiers .c nécessaires au projet.Citation:
Envoyé par oranoutan
oui et après
Bah, tu génères le code et c'est pret.Citation:
Envoyé par oranoutan
héhé j'ai du raté un épisode
Es-ce que tu peux m'expliquer comment le faire en ligne de commande se sera plus simple :
j'ai crée un fichier test.c avec dedans:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #include "ed/inc/sysalloc.h" #include <stdio.h> #define DBG_SYSALLOC int main_ (void) { char * p = malloc (sizeof *p); return 0; } int main (void) { int ret; static char Trace[1 << 8]; SYS_INIT (Trace, OFF); ret = main_ (); sys_mem_trace (); return ret; }
je crée un fichier objet pour test.c et les 4 fichiers sources (.c) et ensuite je rassemble le tout c'est bien ça ?
En ligne de commande, c'est pas simple du tout. Avec make, c'est mieux :Citation:
Envoyé par oranoutan
http://emmanuel-delahaye.developpez.com/make.htm
Tu crées un projet dans lequel tu met tous les .c. Tu dois apprenre à utiliser correctement ton IDE...Citation:
je crée un fichier objet pour test.c et les 4 fichiers sources (.c) et ensuite je rassemble le tout c'est bien ça ?
Mais si tu veux le faire avec make, oui, il faut une commande de compilation par .c et une commande de link pour générer le programme.