麻烦在C中使用常量

时间:2013-03-09 16:08:21

标签: 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

在我的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;
}

1 个答案:

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

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