[C] code retour négatif

Résolu
almor57 Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -  
almor57 Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -
Salut

Je cherche un moyen simple de tester en C un code retour qui peut prendre des valeurs positives ou négatives.

Si le pgm appelé retourne une valeur positive ou nulle, le pgm appelant peut utiliser WEXITSTATUS.

Si le pgm appelé retourne une valeur négative, WEXITSTATUS rend le complément à 256.

La seule solution que j'ai trouvée est de faire un test du type :
if (code_retour > 128) code_retour -= 256

Existe-t-il une fonction permettant de transformer aussi bien les codes retour renvoyés négatifs et positifs ?

Merci
A voir également:

1 réponse

crabs Messages postés 908 Date d'inscription   Statut Membre Dernière intervention   507
 
Salut,
Une solution sans test => cast en char puis cast en int
 code_retour = (int) ( (char) (WEXITSTATUS(status)) ) ;

Tes codes retour au lieu d'aller de 0 à 255, iront de -128 à 127.
A+, crabs
0
mackoncef Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   1
 
ca ne marche pas toujours et cadépend du compilateur
fait plutot un
code_retour = WEXITSTATUS(status) - 128 ;
c'est bete mais ca marche
0
almor57 Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   > mackoncef Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Là non plus ça ne marche pas toujours, surtout que je peux avoir aussi avoir des codes retour positifs.

Mon compilateur est GCC sous Mandrake 10.1.

Ta soluce est OK pour les codes retour <0 qui reviennent du WEXITSTATUS entre 128 et 255, mais quand ils sont positifs ... ta formule les rend négatifs.

En améliorant avec un
if (WEXITSTATUS(status) >= 128)
cret -= 128;
on retombe sur ma première solution

Ce qui m'intéresse, dans ce cas c'est de connaître les compilateurs avec lesquels ça pourrait ne pas marcher. Mon appli est destinée à être distribuée - gratuitement - sur des plate-formes que je ne connais pas à l'avance.

Merci

Merci quand même
0
almor57 Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
Exactement ce que je cherchais...

Merci bcp
0