麻烦在C中使用常量

aho*_*ota 0 c makefile constants

在我的原型文件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
Run Code Online (Sandbox Code Playgroud)

在我的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;
}
Run Code Online (Sandbox Code Playgroud)

Alo*_*ave 5

#include "get_problem.c"
#include "deg_to_rad.c"
#include "evaluate_sin.c"
#include "evaluate_cos.c"
#include "evaluate_tan.c"
Run Code Online (Sandbox Code Playgroud)

不,你不应该包括C文件!

通常,您在头文件(.h)中声明函数,在源文件(.c)中定义它们,并在源文件(.c)中包含头文件,只要您需要使用这些函数.

另外,显示deg_to_rad()函数的定义,编译器清楚地告诉你问题所在,我怀疑你试着调用函数中的其他函数之一.
编译器正确地抱怨,因为函数是在包含源文件的点之后声明的.

您需要遵循上面提到的标题和源文件的一般做法.