[ C ] Règles à suivre pour faire un code propre et portable ?

Règles à suivre pour faire un code propre et portable ? [ C ] - C++ - Programmation

Marsh Posté le 01-06-2003 à 00:25:08    

j'ai pas encore beaucoup programmé en C, et histoire de prendre les bonnes habitudes assez vite, j'aurais besoin de conseil sur la bonne façon de programmer
évidemment, il y a beaucoup de chose à dire, mais ce serait bien de commencer par les principales
 
d'abord au niveau des conformités : lesquelles doit-on suivre ? y-a les POSIX et les ANSI, mais on les voit pas toujours partout, alors je me pose des questions
par exemple, la fonction gettimeofday n'est ni conforme ANSI, ni POSIX
apparemment elle ne doit pas être disponible sur windows par exemple, si ? (j'ai pas win sous la main pour vérifier)
 -> bref, quelles normes doit on suivre si on veut un code portable
 
 
sinon qu'est ce que vous me conseileriez comme bouquin pour apprendre les bonnes habitudes en C
une espèce de bible qui repertorierait les fonctions des principales bibliothèques dispo
j'ai entendu parlé de l'édition o'reilly mais j'ai jamais acheter de leur livre, donc si vous connaissez, donnez votre avis


---------------
Non au projet de loi DADVSI ! (droits d'auteurs)
Reply

Marsh Posté le 01-06-2003 à 00:25:08   

Reply

Marsh Posté le 01-06-2003 à 00:51:31    

Citation :

j'ai entendu parlé de l'édition o'reilly mais j'ai jamais acheter de leur livre, donc si vous connaissez, donnez votre avis

 
 
Je connais pas les bouquins de C de O'Reilly mais en tt cas tous les bouquins O'Reilly que j'ai lu m'ont plu (sur linux, php, mysql, apache etc...). Ils sont tres clairs et bien foutus.

Reply

Marsh Posté le 01-06-2003 à 01:13:59    

ANSI est la norme officielle. POSIX est une norme secondaire pas portable (a part sur les os posix style unix).

Reply

Marsh Posté le 01-06-2003 à 01:51:07    

Tamahome a écrit :

ANSI est la norme officielle. POSIX est une norme secondaire pas portable (a part sur les os posix style unix).


 
ah ok
donc dès que c'est du ansi, on peut être sur de pouvoir le compiler partout ?
 
sinon pour gettimeofday, j'ai vu qu'on pouvait passer à gcc l'option -ansi : ça veut dire quoi au juste ? parce qu'à la base, c'est pas conforme ansi
 
enfin la norme "ISO 9899", que je revois bcp, notamment dans les fonctions de math.h (cos, tan, sin, exp, abs ...), ça vaut quoi ? parce que ces fonctions exitent surement sur toutes les plateformes, j'imagine :)


---------------
Non au projet de loi DADVSI ! (droits d'auteurs)
Reply

Marsh Posté le 01-06-2003 à 01:56:57    

impulse a écrit :

Citation :

j'ai entendu parlé de l'édition o'reilly mais j'ai jamais acheter de leur livre, donc si vous connaissez, donnez votre avis

 
 
Je connais pas les bouquins de C de O'Reilly mais en tt cas tous les bouquins O'Reilly que j'ai lu m'ont plu (sur linux, php, mysql, apache etc...). Ils sont tres clairs et bien foutus.


 
ok, ça me tente bien, mais sinon on m'a conseillé ça sur osa :
"le language C norme ANSI de Brian Kernighan et Denis Ritchie chez dunod (couverture jaune)"
 
enfin je verrais bien, je me renseignerais :)


---------------
Non au projet de loi DADVSI ! (droits d'auteurs)
Reply

Marsh Posté le 01-06-2003 à 08:47:48    

C99 est une bien meilleur norme, le code est d'une qualité indéniablement supérieur à du code ANSI du fait des extensions de l a bibliotheque standard (plus sures) et surtout de la possibilit" de déclarer les variables à n'importe quel endroit du bloc

Reply

Marsh Posté le 01-06-2003 à 13:41:45    

++Taz a écrit :

C99 est une bien meilleur norme, le code est d'une qualité indéniablement supérieur à du code ANSI du fait des extensions de l a bibliotheque standard (plus sures) et surtout de la possibilit" de déclarer les variables à n'importe quel endroit du bloc


 
tout ce qu'il y a dans stdlib.h est C99 conforme ? et c'est portable partout ?
 
bon sinon pour les variables, c'est déjà bien qu'on puisse en déclaré au début de n'importe quel bloc, et ça fait plus propre et mois bordelique de le faire au début, je trouve :D


---------------
Non au projet de loi DADVSI ! (droits d'auteurs)
Reply

Marsh Posté le 01-06-2003 à 15:34:29    

ben tous les systèmes on rajoutés leurs merdes. niveau bibliotheque, le C99, c'est grosso-modo la bibli ANSI + les fonctions n (snprintf, strncpy, etc.)
c'est parfaitement standard, gcc le supporte parfaitement et est largement disponible. maintenant y a des irréductibles qui restent avec leur version 2.95

Reply

Marsh Posté le 01-06-2003 à 17:13:48    

C99 c bien sur le papier. Dans la vraie vie, tlm n'est pas passé à cette norme niveau mise à jour des compilo....

Reply

Marsh Posté le 01-06-2003 à 17:26:52    

c'est ce que je dis... pourtant fo vraiment etre con, les gens veulent toujours optimiser leurs programmes, alors que la première chose à faire c'est de mettre à jour son compilateur pour unversion plus performante

Reply

Marsh Posté le 01-06-2003 à 17:26:52   

Reply

Marsh Posté le 01-06-2003 à 19:15:31    

d'un autre coté le type qui programme un four a micro onde, je doute que les outils soit updaté souvent...

Reply

Marsh Posté le 01-06-2003 à 19:44:09    

là je suis d'accord, mais faut pas etre idiot: chaque environnment à ses contraintes innées. Pas la peine de s'en fabriquer

Reply

Marsh Posté le 12-06-2003 à 18:12:26    

et pour un réseau, y-a moy' de faire un truc portable et propre ? parce que je viens de voir que gethostbyname, listen, bind et autre sont conforme que bsd ou srv4, donc c'est un peu léger pour la portabilité vers zindows  :D


---------------
Non au projet de loi DADVSI ! (droits d'auteurs)
Reply

Marsh Posté le 12-06-2003 à 19:41:48    

tu peux mettre des ifdef pour voir si c'est windows et la tu mets l'autre code, y a pas enormement de difference.
Sous windows il faut pas les memes headers et puis il faut init winsock, sinon les fonctions restent les memes.

Reply

Marsh Posté le 12-06-2003 à 19:46:23    

xWillow a écrit :

tu peux mettre des ifdef pour voir si c'est windows et la tu mets l'autre code, y a pas enormement de difference.
Sous windows il faut pas les memes headers et puis il faut init winsock, sinon les fonctions restent les memes.


 
ok, c'est bon à savoir :jap:


---------------
Non au projet de loi DADVSI ! (droits d'auteurs)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed