在我的原型文件proto.h中,我有
#define LOOP_LIMIT 90.00
#define PI 3.14159
#ifndef _PROTO_H
#define _PROTO_H
#include <stdio.h>
#include <math.h>
#include "get_problem.c"
#include "deg_to_rad.c"
#include "evaluate_sin.c"
#include "evaluate_cos.c"
#include "evaluate_tan.c"
int main(void);
int get_problem();
double deg_to_rad(int deg);
void evaluate_sin(int deg);
void evaluate_cos(int deg);
void evaluate_tan(int deg);
#endif
在我的lab7.c中我有我的主要功能,我包含了proto.h。当我尝试使用“make”命令在Linux上编译时,我收到以下消息:
gcc -c deg_to_rad.c deg_to_rad.c:在函数中“deg_to_rad”:
deg_to_rad.c:2:错误:“PI”未声明(首次在此功能中使用)
deg_to_rad.c:2:错误:(每个未声明的标识符仅报告一次
deg_to_rad.c:2:错误:对于它出现的每个函数。)
make: * [deg_to_rad.o]错误1
我真的不明白这一点,因为我的主要功能正确使用了LOOP_LIMIT,但PI无效。
deg_to_rad.c:
double deg_to_rad(int deg) {
double rad = (PI * deg) / 180;
return rad;
}
答案 0 :(得分:5)
#include "get_problem.c"
#include "deg_to_rad.c"
#include "evaluate_sin.c"
#include "evaluate_cos.c"
#include "evaluate_tan.c"
否否,你不应该包括C档!!!
通常,您在头文件(.h)中声明函数,在源文件(.c)中定义它们,并在源文件(.c)中包含头文件,只要您需要使用这些函数。
另外,显示deg_to_rad()
函数的定义,编译器清楚地告诉你问题所在,我怀疑你试图调用函数中的其他函数之一。
编译器正确地抱怨,因为在包含源文件之后,函数被声明为。
您需要遵循上面提到的标头和源文件的一般做法。