0

在我的原型文件 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: error: (每个未声明的标识符只报告一次

deg_to_rad.c:2:错误:对于它出现的每个函数。)

制作:* [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;
}
4

1 回答 1

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()函数的定义,编译器清楚地告诉你问题出在哪里,我怀疑你试图调用函数中的其他函数之一。
编译器正确地抱怨,因为函数是在包含源文件的点 之后声明的。

您需要遵循上面提到的头文件和源文件的一般做法。

于 2013-03-09T16:10:39.760 回答