2017-01-10 2 views
-2

Pour un projet uni-je utiliser le code ANSI C fourni dans la norme de codage de la parole GSM de 1996. l'archive zip peut être trouvée ici https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=281Comment ouvrir et utiliser l'ancien code C ANSI de 1996 sur un Mac?

J'ai un système d'exploitation en cours d'exécution MacBook Pro X 10.11.6.

en essayant de compiler tous les différents fichiers dans son répertoire/C (répertoire principal) avec Xcode installé dans le terminal en utilisant clang:

clang dtx.c err_conc.c globdefs.c gsm_hr.c homing.c host.c mathdp31.c mathhalf.c sp_dec.c sp_enc.c sp_frm.c SP_rom.c sp_sfrm.c utils.c vad.c male.inp -o GSMHR 

donne de multiples erreurs comme:

In file included from dtx.c:37: 
./mathhalf.h:75:11: warning: incompatible redeclaration of library function 'round' [-Wincompatible-library-redeclaration] 
Shortword round(Longword L_var1);  /* 1 ops */ 

I supposons que c'est parce que le nouveau compilateur a des fonctions définies qui n'étaient pas définies à l'époque?

De toute façon, quel est le moyen le plus facile pour moi de rendre ce code utilisable?

+1

l'option '-std = c89' a-t-elle échoué? – StoryTeller

+0

Lorsque j'ai fait un travail similaire, j'ai utilisé "sed" pour renommer toutes les fonctions en conflit dans les fichiers téléchargés. –

Répondre

-2

POSIX (et d'autres corps de normalisation) définissent une fonction C round qui prend et retourne un type à virgule flottante. La fonction round qui semble être déclarée dans votre fichier mathhalf.h est probablement implémentée dans le fichier mathhalf.c et prend et retourne entiers types (32 et 16 bits, apparemment). Cette fonction se heurte au round fourni avec le compilateur.

En supposant que la fonction est implémentée dans mathhalf.c, renommez-la simplement, par exemple, intRound dans les fichiers .c et .h.

+0

Est-ce un mac posix 1996? – user3528438

+0

@ user3528438 Non, mais un MacOS X 201x avec clang est. Personne n'a parlé d'un Mac 1996. – tofro

+0

oui recherche dans tous les fichiers et tout changer à arrondi() travaillé. J'ai aussi été confus avec la façon de passer les arguments de la ligne de commande, mais je l'ai compris maintenant. Je vous remercie – Henrik