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: エラー: (宣言されていない識別子はそれぞれ一度だけ報告されます

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;
}
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 に答える