我正在尝试编译一个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的功能,为什么会抱怨?
答案 0 :(得分:3)
关于第一个问题,关于PI
,请参阅Pascal Cuoq的评论(仅此而已)。
对于报告隐式声明的问题,您没有包含这些函数的相关标题。 IIRC exit
和abort
由<stdlib.h
宣布。看看吧。
干杯&amp;第h。,