Main中函数类型之前的预期表达式

时间:2013-10-27 22:23:02

标签: c function

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

1 个答案:

答案 0 :(得分:3)

这里有几个问题。这是其中之一:

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

在这里,您将第二个参数传递给printfvoid PlayingDice(void)。但是,这不是一个价值。 void PlayingDice(void)是一个函数原型,它说“有一些函数叫PlayingDice,什么都不带,什么都不返回。”这根本不是一个价值。你可能想做这样的事情:

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

这实际上调用PlayingDice并获取返回值。但是, too 是有问题的,因为函数返回void。您可能想要确定是否希望此函数返回任何内容。如果是,则返回类型int。如果没有,请完全删除printf

同样,这条线是合法的,但几乎肯定不是你想要的:

// Returns function to main
return main();

将函数返回到main。相反,它再次调用main,等待main返回一个值,然后返回main生成的值。如果要返回main,只需删除此语句即可。它没有做任何事情。

希望这有帮助!