我正在尝试编译一个 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不可能不申报。
这可能是什么问题?
此外,除了那个塞子之外,我还收到关于“函数中止的隐式声明”和“函数退出的隐式声明”以及“内置函数'exit'的不兼容隐式声明”的提示,但是,它们是标准的c的函数,为什么会报错?
最佳答案
第一个问题,关于PI
,请参阅 Pascal Cuoq 的评论(仅此而已)。
对于报告的隐式声明问题,您没有包含这些函数的相关 header 。 IIRC exit
和 abort
由 <stdlib.h
声明.但是请检查一下。
干杯,
关于c++ - 编译 C 代码,看不到 #define 常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4013941/