Компиляция кода C, не видит константу # define'd - PullRequest
0 голосов
/ 25 октября 2010

Я пытаюсь скомпилировать кодер mp3 8 Гц - код C в QT Creator.

В файле l3psy.c, который начинается так:

#include <stdio.h>

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

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

Этап сборки жалуется на то, что PI здесь не объявлен

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

Но types.h, который явно включен, начинается так:

#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

следовательно, PI не может быть необъявленным.

В чем здесь проблема?


Кроме того, кроме этой заглушки, я также получаю жалобы на «неявное объявление прекращения функции» и «неявное объявление выхода из функции» и «несовместимое неявное объявление встроенной функции« выход »», но они являются стандартными функции с, с чего бы это жаловаться?

1 Ответ

3 голосов
/ 25 октября 2010

По первой проблеме, о PI, см. Комментарий Паскаля Куока (вот и все).

Что касается проблем с неявными объявлениями, о которых вы сообщили, вы не включили соответствующие заголовки для этих функций. IIRC exit и abort объявлены <stdlib.h. Но проверьте это.

Приветствия и hth.,

...