在 C 中使用常量时遇到问题
Posted
技术标签:
【中文标题】在 C 中使用常量时遇到问题【英文标题】:Trouble using constants in C 【发布时间】:2013-02-25 02:37:16 【问题描述】:在我的原型文件 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;
【问题讨论】:
如果您显示有问题的代码会有所帮助。 在.h
文件中包含.c
文件至少很奇怪。
【参考方案1】:
#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()
函数的定义,编译器清楚地告诉你问题出在哪里,我怀疑你试图调用函数中的其他函数之一。
编译器正确地抱怨,因为函数是在您包含源文件的位置之后声明的。。
您需要遵循上面提到的头文件和源文件的一般做法。
【讨论】:
而且你几乎不应该在彼此中使用#include
头文件。顺便说一句,有非常好的数学常数标准定义可用,例如M_PI
等。以上是关于在 C 中使用常量时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章