hé oui ca existe bel et bien.Citation:
Envoyé par Jack_serious
Et crois moi c'est pas la joie surtout quand tu faire des rajout ou des modifications.
Version imprimable
hé oui ca existe bel et bien.Citation:
Envoyé par Jack_serious
Et crois moi c'est pas la joie surtout quand tu faire des rajout ou des modifications.
Quand tu as 300 fonctions aussi, c'est dur de s'y retrouver.
J'ouvre mon K&R page 262.
Ici est présentée entre autres la fonction ctime dont le prototype est le suivant:
char* ctime(const time_t* tp);
Elle retourne donc une chaine de caractères. Je ne sais pas trop d'ou elle vient. D'après mes tests elle n'est pas sur la pile (pas avec mon compilo en tous cas).
Je me trompe ou cette fonction est un très bon exemple du Goret-Style?
Après véfication, il s'agit d'un malloc, le code suivant ne plantant pas a l'exécution:
Code:
1
2
3 time_t tp(0); free(ctime(&tp));
A partir d'une certaine taille de code il faut faire un bon decoupage.
Si les fonctions on des noms parlant, et les fichiers qui les contiennes aussi, et que le code est bien decoupe avec des fonctions de longueur raisonnable, avec 300 fonction c'est largement lisible.
Il faut juste eviter les fonctions trop longues (30 ~ 40 lignes) et ne pas mettre trop de fonctions par fichier pour qu'on puisse les retrouver rapidement (5 fonctions par fichier).
En plus quand on depasse les 200 fichiers la compilation devient magnifique.
Bof, si ça répond à un besoin bien défini, pourquoi pas. Quand on fait des ADT, on fait des des accesseurs de 2-3 lignes, mais on a pas le choix...Citation:
Envoyé par gnto
http://emmanuel-delahaye.developpez.com/tad.htm
D'un variable statique. C'est écrit quelques lignes plus haut... C'est dingue pas savoir lire à ce point là...Citation:
Envoyé par socrate
Absolument. C'est une des fonctions dont certains demandent la révision ("google n1031")Citation:
Je me trompe ou cette fonction est un très bon exemple du Goret-Style?
http://www.open-std.org/JTC1/SC22/WG...docs/n1031.pdf
Citation:
3.5 Date and time <time.h>
3.5.1 Time conversion functions
1 Like the strftime function, the asctime_s and ctime_s, functions do not return a
pointer to a static object, and other library functions are permitted to call them.
Non. Comportement indéfini.Citation:
Après véfication, il s'agit d'un malloc, le code suivant ne plantant pas a l'exécution:
Code:
1
2
3 time_t tp(0); free(ctime(&tp));
Après on travaille par bibliothèques. La hiérachie est la suivante :Citation:
Envoyé par Jack_serious
Projet -> Applications -> Exécutables -> Bibliothèques + 1 main.c -> Unités de compilations -> Fonctions.
Puis je avoir des précision sur bibliothèque + 1 main.c ?Citation:
Envoyé par Emmanuel Delahaye
Tu regroupes les fonctions en blocs fonctionnels, tu en fais une ou des bibliothèques, et pour réaliser l'application , il faut bien au moins un main() quelque part. En général, on ne le met pas en bibliothèque (laquelle ?), mais on le met dans un main.c. C'est lui qui lance toutes les initialisations, crée et lance les taches... et se saborde (ou tombe alors en tache de fond on de debug...) ou attend sagement que tout le bazar se termine pour quitter proprement... Tout dépend du style d'application... Chez nous c'est du 24/7, alors pas de fin...Citation:
Envoyé par gnto
Mais maintenant qu'on a du Linux embarqué, on peut envisager un arrêt de certains services...
Oui tu peux alors aussi creer des librairies
Cest quoi ça ?Citation:
Envoyé par gnto
http://emmanuel-delahaye.developpez....m#bibliotheque
oui, apparement tu appeles ca bibliotheque
Perso je vois pas de quoi tu parles, c'est pas écrit dans mon bouquin.Citation:
Envoyé par Emmanuel Delahaye
Et sous mon compilo, il s'agit bien de mémoire allouée avec malloc (que tu le veuille ou non, j'obtiens un erreur quand je fais un free sur autre chose que de la mémoire allouée avec malloc)
J'ouvre mon K&R page 262 et je lis :Citation:
Envoyé par socrate
"Les quatre fonctions suivantes retournent des pointeurs sur des objets statiques qui peuvent être écrasés par d'autres appels"
suivent :
- asctime()
- ctime()
- gmtime()
- localtime()
Alors ce n'est pas conforme à la norme. Montre la doc de la fonction sur ton compilateur. Donne la référence de ton compilateur.Citation:
Et sous mon compilo, il s'agit bien de mémoire allouée avec malloc
Moi, je dis simplement que le comportement est indéfini, c'est tout.Citation:
(que tu le veuille ou non, j'obtiens un erreur quand je fais un free sur autre chose que de la mémoire allouée avec malloc)
Si ton compilateur prend des libertés avec la norme, ce n'est plus du C et la demande de free() doit être explicite dans le doc. Sinon, c'est du pipeau.
La norme est claire là dessus :
Citation:
Envoyé par ISO/IEC 9899:1999 Page 340-342
Petite remarque parce que je viens de tomber sur le cas, dans l'échelle de goret, il manque le copié-collé de plus de 10 lignes. Style le mec qui ne connait que le while, pas le do:
Moi, je le mettrais facile à l'echelle 7 ou 8.Code:
1
2
3
4
5
6
7
8
9
10
11 if (Condition) { // Traitement ... while (Condition) // La même que dans le if { // Copié-collé de traitement ... } }
C'est pas ça le problème, c'est que librairie c'est pas la bonne traduction de library.Citation:
Envoyé par gnto
Librairie en anglais c'est bookshop!
:oops: merci !Citation:
Envoyé par HanLee
Je voulais savoir suite à une petite discussion sur les standards, qui en ce moment sont ma principale occupation, si c'est goret d'utiliser du POSIX alors que l'on peut utiliser du ANSI C ???
Oui ! :aie:Citation:
Envoyé par gnto
Le choix doit se faire comme ceci :
- Standard C
- POSIX.1 (ou 2)
- Fonctions maison portables
- Fonctions systèmes
- Fonctions maison non portables