2010-10-25 12 views
0

J'essaie de compiler un encodeur mp3 8hz - code C dans QT Creator.Compilation du code C, ne voit pas une constante # define'd

Dans un l3psy.c de fichier qui commence comme ceci

#include <stdio.h> 

#include "types.h" 
#include "error.h" 
#include "layer3.h" 
#include "l3psy.h" 

#include "fft.h" 
#include "tables.h" 

L'étape de construction se plaint de PI étant non déclarés ici

for(i=0;i<BLKSIZE;i++) window[i] = 0.5*(1-cos(2.0*PI*(i-0.5)/BLKSIZE)); 

Mais types.h, ce qui est évidemment inclus, commence comme ça :

#ifndef TYPES_H 
#define TYPES_H 

#include <stdio.h> 
#include <time.h> 
#include "portableio.h" 


#ifdef PI 
#undef PI 
#define   PI      3.14159265358979 
#endif 

#define   PI4      .78539816339745 
#define   PI64     .049087385212 

par conséquent, il n'y a aucun moyen pour que PI ne soit pas déclaré.

Quel peut être le problème ici?


aussi, en dehors de ce bouchon, je reçois aussi plaint de « déclaration implicite de abort fonction » et « déclaration implicite de sortie de la fonction » et « déclaration implicite de la fonction « exit » intégrée », mais , ils sont des fonctions standard de c, pourquoi se plaindre?

+1

S'il vous plaît poster le message d'erreur réelle que vous obtenez. –

+8

"il n'y a aucun moyen pour que PI ne soit pas déclaré": De la façon dont il est écrit, si "PI" n'est pas défini avant d'inclure les types.h, il ne reste pas défini après l'inclusion. –

+0

oh ... je vois l'erreur. il ne s'exécute que si pi est défini. – Istrebitel

Répondre

3

Pour le premier problème, environ PI, voir le commentaire de Pascal Cuoq (c'est tout).

Pour les problèmes liés aux déclarations implicites signalées, vous n'avez pas inclus les en-têtes correspondants pour ces fonctions. IIRC exit et abort sont déclarés par <stdlib.h. Mais regarde ça.

Vive & HTH.,

+0

Oui, en effet, ça m'a aidé! – Istrebitel