编译C代码,看不到#define'd常量

时间:2010-10-25 11:06:03

标签: c++ c qt qt4 qt-creator

我正在尝试编译一个8hz mp3编码器 - QT Creator中的C代码。

在像这样开始的文件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无法取消声明。

这里有什么问题?


另外,除了那个塞子,我还抱怨“函数中止的隐式声明”和“函数退出的隐式声明”和“内置函数'退出'的不兼容的隐式声明”,但是,它们是标准的c的功能,为什么会抱怨?

1 个答案:

答案 0 :(得分:3)

关于第一个问题,关于PI,请参阅Pascal Cuoq的评论(仅此而已)。

对于报告隐式声明的问题,您没有包含这些函数的相关标题。 IIRC exitabort<stdlib.h宣布。看看吧。

干杯&amp;第h。,