C-ansi et portable

C-ansi et portable - C - Programmation

Marsh Posté le 31-07-2006 à 08:33:48    

Bonjour,
 
est-ce que vous pourriez m'indiquer comment savoir si un code est portable et écrit en C-ansi.
Y a-t-il des astuces pour cela ?  
 
Merci

Reply

Marsh Posté le 31-07-2006 à 08:33:48   

Reply

Marsh Posté le 31-07-2006 à 10:05:01    

Gattuso a écrit :

est-ce que vous pourriez m'indiquer comment savoir si un code est portable et écrit en C-ansi.
Y a-t-il des astuces pour cela ?  


Pour ANSI-C, tu peux activer le mode ANSI 'pur' sur la plupart des compilateurs (lire la doc). Pour gcc (C90), c'est
 
-ansi -pedantic
 
Les écarts seront signalés.
 
Pour 'portable', c'est plus compliqué. Ca dépend vraiment du code et du dégré de portabilité voulu.
 
Mais je sens bien que tu tournes autour du pot. Quelle est ta vraie question ?

Message cité 1 fois
Message édité par Emmanuel Delahaye le 31-07-2006 à 10:14:58

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 31-07-2006 à 10:09:15    

Sinon, tu peux également t'aider de cette page, qui répertorie les fonctions standards et les normes correspondantes :
http://www.schweikhardt.net/identifiers.html

Reply

Marsh Posté le 01-08-2006 à 21:14:41    

Emmanuel Delahaye a écrit :

Pour ANSI-C, tu peux activer le mode ANSI 'pur' sur la plupart des compilateurs (lire la doc). Pour gcc (C90), c'est
 
-ansi -pedantic
 
Les écarts seront signalés.
 
Pour 'portable', c'est plus compliqué. Ca dépend vraiment du code et du dégré de portabilité voulu.
 
Mais je sens bien que tu tournes autour du pot. Quelle est ta vraie question ?


Je pose cette question car sur un livre, j'ai un code écrit en C, et il est demandé si le code est portable et écrit en C-ansi.
Question à laquelle, je ne sais pas répondre.
Un des codes est le suivant :

Citation :

[quote]Sur une machine avec codage EBCDIC natif pour les chaines de caractères, la fonction suivante est correcte ? Est-elle écrite en C- ANSI ? ESt-elle portable ?

Code :
  1. int islower(int c) { return (c & 0x80) && (~c & 0x40); }



Il y en a d'autres avec plusieurs fonctions mais avec celui-ci, comment savoir s'il est portable et C-ansi en le lisant (sans le tester)?

Reply

Marsh Posté le 01-08-2006 à 21:21:01    

la fonction est correcte, elle conforme c ansi mais son comportement supposé (de son nom) n'est pas portable
 
edit: en fait elle n'est peut etre pas correcte, il faut verifier avec l'ebcdic


Message édité par skelter le 01-08-2006 à 21:22:31
Reply

Marsh Posté le 01-08-2006 à 22:52:52    

Un truc vraiment portable (mais moyennement performant) serait de ne pas utiliser la représentation numérique des caractères minuscules mais de faire un test énumératif exhaustif.
En code ASCII par exemple, les lettres minuscules sont numérotés de manières contigues, contrairement à l'EBCDIC.

Reply

Marsh Posté le 01-08-2006 à 23:27:33    

Emdel > la fonction pour l'EBCDIC mal l'air correcte...

Reply

Marsh Posté le 01-08-2006 à 23:43:21    

oui ? je ne te suis toujours pas. 0x80 c'est bien sur 8 bits également.

Reply

Marsh Posté le 01-08-2006 à 23:47:07    

pains-aux-raisins a écrit :

Emdel > la fonction pour l'EBCDIC mal l'air correcte...


Oui, c'est possible, j'avais lu c & ~0x80...
 
J'ai tout effacé.


Message édité par Emmanuel Delahaye le 01-08-2006 à 23:47:30

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

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