Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2980 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Entier int passé en 64 bits (8 octets) et non 31 bits (4 octets)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Entier int passé en 64 bits (8 octets) et non 31 bits (4 octets)

n°2185755
NathGe
Posté le 13-04-2013 à 17:57:11  profilanswer
 

Bonjour,
 
Je suis en train d'interfacer un programme c++ avec une librairie commerciale développée en 64 bits et en fortran.
Pour cette nouvelle version de la librairie, je dois passer toutes les fonctions fortran appelant cette librairie en 64 bits (INTEGER*8 ..). Pour cela c'est fait.
 
Mon problème c'est que je dois passer des entiers de mon programme C++ vers le fortran, tous cela en 64 bits également.
Donc, même si je travaille en Visual 2005, en 64 bits (je crois), sur un PC 64 bits, mes entiers int en C++ sont codés en 4 bits (ce que je confirme bien avec un sizeof(.) ).
 
Je pensais, en travaillant en Visual 2005 en 64 bits, que mes entiers C++ (int) seraient codés en 64 bits (8 octets) et non plus en 32 bits (4 octets).
Est-ce normal, même en 64 bits, de trouver mes entiers toujours en 32 bits ?  
 
Est-ce qu'il est possible, par défaut de faire comprendre à mon programme que tous les entiers int sont maintenant codés, par défaut, en 64 bits ?
 
La seule possibilité que j'ai trouvé actuellement, pour travailler, sans  erreur de compilation et d'éxécution, c'est de travailler avec des 'long long int', qui, eux, sont bien en 64 bits (mes long int sont encore, comme les int, en 32 bits (4 octets)).
 
Est-ce que un #define INT int / #define INT long long int  en début de code ne permettrait pas ce travail ?
 
Merci d'avance de votre réponse, car cela me dépanerait pour éviter de tous changer dans mon code actuel.

mood
Publicité
Posté le 13-04-2013 à 17:57:11  profilanswer
 

n°2185774
gilou
Modérateur
Modzilla
Posté le 13-04-2013 à 21:55:02  profilanswer
 

Citation :

Est-ce normal, même en 64 bits, de trouver mes entiers toujours en 32 bits ?

A priori non, il y a peut être un flag a positionner pour sortir du code 64 bits avec ton compilo.
Sinon, j'irais voir du côté de <cstdint> et si ce n'est pas présent sur ton compilo, il doit y en avoir la version boost que tu peux te recompiler et utiliser.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2185775
Farian
Posté le 13-04-2013 à 22:04:00  profilanswer
 

les "int" font 32 bits, même sur un windows 64 bits, cf http://en.wikipedia.org/wiki/64-bit#64-bit_data_models
 
Pour garantir la taille des données, quand on en a besoin, je n'insisterai jamais assez sur l'utilisation des intxx_t, qui garantissent la taille de la donnée ainsi créée, à utiliser pour toutes les données en interface avec d'autres systèmes.
 
Bon courage pour reprendre votre code ! :)

Message cité 1 fois
Message édité par Farian le 13-04-2013 à 22:06:15
n°2185776
gilou
Modérateur
Modzilla
Posté le 13-04-2013 à 22:20:58  profilanswer
 

Farian a écrit :

Pour garantir la taille des données, quand on en a besoin, je n'insisterai jamais assez sur l'utilisation des intxx_t, qui garantissent la taille de la donnée ainsi créée, à utiliser pour toutes les données en interface avec d'autres systèmes.

On est sur la même longueur d'onde.
Pour rester sur ce type de question, j'ai lu avec intérêt cet après-midi la proposition d'ajouter les fonctions de Network byteorder conversion (hton* ntoh*) a la librairie standard pour le C++ 14
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Entier int passé en 64 bits (8 octets) et non 31 bits (4 octets)

 

Sujets relatifs
copie dossier entier[Résolu] Changement mot de passe SQL chez Free ?
Frontpage: protéger l'accès à une page par un mot de passeConvertir application 16 bits en 32 bits : possible ?
[DELPHI] convertir une chaine hexadecimale en suite de bits ...quelle statégie adopter pour l'envoi des emails avec mot de passe
suite logique de mot de bitsmot de passe perdu sur projet vb
Variable Tableau qui ne passe pas en condition ( ! )générer une suite de bits aléatoire
Plus de sujets relatifs à : Entier int passé en 64 bits (8 octets) et non 31 bits (4 octets)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR