Citation:
Envoyé par
Kannagi
Est ça pose un souci l'allocation/désallocation ?
Non, en fait en C++ on a inventé les pointeurs intelligents pour s'amuser :roll:.
Citation:
Il n'y a pas toujours de doc hein si tu prend un code source sur le net , y a pas forcement de doc donc quand je lis un truc comme mon_malloc(arg); je m'attend a une fonction donc je m'attendrai pas a un define et les fonction ce trouve dans les .c en général.
Donc il ne faut pas coder de fonctions inlines car tu ne les trouveras pas ?
Généralement, tous les prototypes se trouvent dans un fichier .h
S'il ne s'y trouve pas, c'est que la fonction est locale au fichier où elle est utilisée.
Ensuite, on ne te parles pas des codes que tu trouves sur internet mais du code que tu écris là. Dès que tu met les tag doxygen, il n'y a aucun problème pour trouver la documentation.
Citation:
J'ai pas codé tous les programmes du monde mais en règle général c'est largement possible.
Et dans les cas où cela ne l'est pas, on fait quoi?
Citation:
Mon indentation pose un souci ?Quel ligne je serais curieux ? après chaque if ou while j'indente et tous mes crochets sont alignés difficile de faire mieux =P
Lignes : 58, 88, 116, 149.
+ lignes 102-103 peut porter à confusion, il aurait fallu rajouter un saut de ligne.
Citation:
Je code pas un petit programme , donc une fonction de 234 c'est pas un souci et c'est pas énorme , d'ailleurs si tu code correctement un loader de fichier obj t'en a autant.
C'est très stupide de se limiter a un nombre de ligne pour une fonction , si la fonction doit être longue elle le sera ,si elle est court aussi , j'ai des fonction de 10 lignes comme de 200 j'en vois pas le probleme.
Il ne s'agit pas de limiter le nombre de lignes mais de découper ses fonctions en sous-fonctions cohérentes.
C'est une question de lisibilité et de maintenabilité.
Citation:
Envoyé par
Sve@r
Euh tu as toi-même donné cet exemple comme possible pour expliquer qu'on pouvait en oublier...
Possible mais pas nécessairement que je faisais 50 allocs par fonctions dans mes programmes.
Citation:
C'est louable... mais à mon avis ça ne peut pas marcher. Parce que l'allocation se fait au début et la désallocation se fait à la fin et qu'il y a plein de choses entre les deux. Et donc tu es obligé de te souvenir, tout au long de ton travail, de toutes tes allocations pour plus tard. Tout comme tu es opbligé de te souvenir de tout ce qui a été ouvert pour le fermer à la fin. Et donc vouloir remplacer malloc() puis travail puis free() par alloc_init() puis travail puis alloc_close() c'est du pareil au même.
Ceci dit, "toutes tes allocations" ça ne se chiffre généralement pas en dizaines non plus...
Pas vraiment car il suffit de faire en sorte que lors d'un free, de mettre la valeur correspondante dans le tableau à NULL.
Là, le seul avantage, c'est qu'on pourra libérer le tout en une seule instruction (donc on ne pourra pas oublier un des free).
Après, il vaudrait mieux regarder du côté de la seconde piste pour libérer la mémoire dès que la fonction retourne quoi qu'il arrive (mais pas sûr que ce soit possible).
Citation:
Oui ben moi j'aime pas. Je préfère savoir réellement si c'est une macro que j'appelle ou une fonction. ne serait-ce que pour éviter de lui passer un "i++". Enfin je présume que les macros cachées n'utilisent qu'une fois le paramètre qu'on leur passe justement pour éviter ce genre d'effet de bord mais qu'importe, je préfère le savoir.
En effet, dans une macro, il ne doit utiliser le paramètre qu'une seule fois, ce qui limite assez les macro.
Mais tu n'as pas à savoir ce qu'il se cache derrière. C'est le principe d'encapsulation.