-5

34 行目で、「'void' の前に予期される式がある」というエラーが表示されます (または int、関数の型を変更すると、どちらが正しいかわかりません)。これを修正する方法がわかりません。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

// Declare Function Prototypes
void PlayingDice(void);
void GuessNumber(void);

int main (void)
{
    // Loop so games can be replayed
    do
    {

        // Introducing Games
        int game, UserGuessDice, UserGuessNumber, die1, die2, sum, number;
        printf("Do you want to (1) play dice, (2) guess the number, or (3) exit program?\n");
        scanf("%d", &game);

        printf("You have selected %d.\n", game);

        if (game==1)
            {
                // Calls Playing Dice Game
                printf("%d", void PlayingDice(void));
            }

        else if (game==2)
            {
                // Calls Guess Number Game
                printf("%d", void GuessNumber(void));
            }

        else
            {
                // In case user enters invalid option
                printf("That wasn't an option!\n");
            }
    }

    while (game != 3);

    // End Program
    printf("Good bye.\n");

return (0);
}
4

1 に答える 1

3

ここにはいくつかの問題があります。ここにそれらの1つがあります:

printf("%d", void PlayingDice(void));

ここでは、2 番目のパラメーターとしてprintfvalueに渡していますvoid PlayingDice(void)。ただし、これは値ではありません。は、「何も取り込まず、何も返さないvoid PlayingDice(void)関数が呼び出されている」という関数プロトタイプです。PlayingDiceそれはまったく値ではありません。あなたはおそらく次のようなことをするつもりでした:

printf("%d", PlayingDice());

これは実際に呼び出しPlayingDiceて戻り値を取得します。ただし、関数が を返すため、これvoid問題です。おそらく、この関数が何かを返すかどうかを決定する必要があります。もしそうなら、戻り値の型を作りintます。printfそうでない場合は、完全に削除します。

同様に、この行は有効ですが、ほとんどの場合、あなたが望むものではありません:

// Returns function to main
return main();

これは関数を に戻しませmain。代わりに、再度呼び出し、値が返されるのをmain待ってから、生成されmainた値を返しますmain。に戻りたい場合はmain、このステートメントを削除してください。何もしていません。

お役に立てれば!

于 2013-10-27T22:26:25.273 に答える