HomeProductsDownloadOrderSupportSearch
  
 
 Myriad Blog 1.3.0 Tuesday, Mar 19th, 2024 at 06:44am 

Thursday, Apr 19th, 2018 at 05:23pm
32/64 bit -  Etape 3

 
Si nous avions travaillé seulement sur Windows, nous n'aurions pas eu besoin de trop modifier nos fichiers sources C. Hélas, nos programmes doivent aussi se compiler sur MacOS, et là les choses se gâtent.  
 
Un peu partout depuis les 30 dernières années, nous avons utilisé le type "long" pour désigner les entiers 32 bits. Mais d'après le grand livre du C, la taille en bits de ce type peut varier en fonction de la plateforme sur laquelle on est.  
Sur Windows, le "long" reste à 32 bits, même si on compile un programme en mode 64 bits. Sur Macintosh par contre sa taille est doublée, ce qui rend la version 64 bits du programme incompatible avec tous les fichiers que l'application a pu sauvegarder précédemment, et pose des problèmes quasiment insolubles.
 
Seule solution, cesser d'utiliser ce type, et le remplacer pas le tout nouveau typage du C à nombre de bits définis, en l'occurence int32_t.
 
Nous avons entamé des essais de remplacement globaux, suivis d'une grosse session de correction du code pour éviter les alertes de compilation (le compilateur dit qu'il peut y avoir un problème, mais ce n'est pas sûr). C'est un travail de forçat.
 
Nous avons commencé par la seule librairie ACAM (notre socle de compatibilité entre les différents systèmes) et une très très petite application, avec une seule fenêtre et 3 boutons.
 
Nous avons effectué environ 6000 remplacements dans les 300 fichiers source C, puis avons commencé à traiter une à une les 1200 alertes de compilation afin de les faire disparaître.
Nous en sommes environ à la moitié, et pour l'instant, aucune ne pouvait déboucher sur une véritable erreur. Mais au moins, nous aurons une compilation plus "propre", et cela évitera que les vraies indications de problème se retrouvent noyées dans les alertes inutiles.
by Olivier Guillion


Most recent first
Oldest first

Top of page
Legal information Cookies Last update:  (c) Myriad