私はコードを修正し、整数を2で割るオプションを追加しなければならない宿題があります。しかし、私のセクションを追加するとエラーメッセージが表示され続けます。新しい関数を作成するときにエラーメッセージが表示される
#include <stdio.h>
int main()
{
/* variable definition: */
int intValue, menuSelect,Results;
float floatValue;
intValue = 1;
// While a positive number
while (intValue > 0)
{
printf ("Enter a positive Integer\n: ");
scanf("%d", &intValue);
if (intValue > 0)
{
printf ("Enter 1 to calculate Square, 2 to Calculate Cube, 3 to divide by 2 \n: ");
scanf("%d", &menuSelect);
if (menuSelect == 1)
{
// Call the Square Function
Results = Square(intValue);
printf("Square of %d is %d\n",intValue,Results);
}
else if (menuSelect == 2)
{
// Call the Cube function
Results = Cube(intValue);
printf("Cube of %d is %d\n",intValue,Results);
}
else if (menuSelect == 3)
{
//Call the half function
Results = divide2(floatValue);
printf("Half of %d is %f\n", intValue,Results);
}
else
printf("Invalid menu item, only 1 or 2 is accepted\n");
}
}
return 0;
}
/* function returning the Square of a number */
int Square(int value)
{
return value*value;
}
/* function returning the Cube of a number */
int Cube(int value)
{
return value*value*value;
}
//Function returning the half of a number
float divide2(float value)
{
return value/2;
}
そして、私は取得していたエラーは以下のとおりです:ここ
はコードである
prog.c: In function 'main':
prog.c:38:18: warning: implicit declaration of function 'Square' [-Wimplicit-function-declaration]
Results = Square(intValue);
^
prog.c:50:18: warning: implicit declaration of function 'Cube' [-Wimplicit-function-declaration]
Results = Cube(intValue);
^
prog.c:62:17: warning: implicit declaration of function 'divide2' [-Wimplicit-function-declaration]
Results = divide2(floatValue);
^
prog.c:64:14: warning: format '%f' expects argument of type 'double', but argument 3 has type 'int' [-Wformat=]
printf("Half of %d is %f\n", intValue,Results);
^
prog.c: At top level:
prog.c:101:7: error: conflicting types for 'divide2'
float divide2(float value)
^
prog.c:62:17: note: previous implicit declaration of 'divide2' was here
Results = divide2(floatValue);
^
コードが間違っていますか?元のコードを実行しているとき、私はメッセージを取得していない
Cコードを書くときには、一度に1つずつコードを理解するようにコンパイラに指示しているとします。コードの他の部分が使用される前に使用する関数を導入する必要があります。あなたの特定の例では、 'main'は' Square'の前にあるので、 'Square'呼び出しを最初に見た時にコンパイラは本当に何をすべきか分かりません。この原則に従って機能を注文し、問題が解決するかどうかを確認してください。 –
'main'関数の前にすべての関数のプロトタイプを使い、その後でそれらを定義するだけです。 – RastaJedi
prototypesを追加するか、関数を実際に呼び出す前に定義します。つまり、main()から呼び出す場合はmain()の前に定義します。 –