C++ 错误C3861:&x27;滚骰子';:找不到标识符
我正在尝试实现一些图形,但调用底部显示的函数int rollDice()时遇到问题,不知道如何解决这个问题?任何想法。。。我收到错误C3861:“rollDice”:找不到标识符C++ 错误C3861:&x27;滚骰子';:找不到标识符,c++,visual-studio-2010,visual-studio-2012,mfc,C++,Visual Studio 2010,Visual Studio 2012,Mfc,我正在尝试实现一些图形,但调用底部显示的函数int rollDice()时遇到问题,不知道如何解决这个问题?任何想法。。。我收到错误C3861:“rollDice”:找不到标识符 int rollDice(); void CMFCApplication11Dlg::OnBnClickedButton1() { enum Status { CONTINUE, WON, LOST }; int myPoint; Status gameStatus; sr
int rollDice();
void CMFCApplication11Dlg::OnBnClickedButton1()
{
enum Status { CONTINUE, WON, LOST };
int myPoint;
Status gameStatus;
srand( (unsigned)time( NULL ) );
int sumOfDice = rollDice();
switch ( sumOfDice )
{
case 7:
case 11:
gameStatus = WON;
break;
case 2:
case 3:
case 12:
gameStatus = LOST;
break;
default:
gameStatus = CONTINUE;
myPoint = sumOfDice;
break;
}
while ( gameStatus == CONTINUE )
{
rollCounter++;
sumOfDice = rollDice();
if ( sumOfDice == myPoint )
gameStatus = WON;
else
if ( sumOfDice == 7 )
gameStatus = LOST;
}
if ( gameStatus == WON )
{
}
else
{
}
}
int rollDice()
{
int die1 = 1 + rand() % 6;
int die2 = 1 + rand() % 6;
int sum = die1 + die2;
return sum;
}
更新了函数的Put声明
rollDice
int rollDice();
在onbnclickedbuton1
之前,或者只需将rollDice
函数的定义移动到onbnclickedbuton1
之前
原因是在当前代码中,当您在onbnclickedbuton1
中调用rollDice
时,编译器尚未看到该函数,这就是为什么您看到标识符未找到
错误。将函数的声明放入rollDice
int rollDice();
在onbnclickedbuton1
之前,或者只需将rollDice
函数的定义移动到onbnclickedbuton1
之前
原因是在当前代码中,当您调用rollDice
内部onbnclickedbuton1
时,编译器尚未看到该函数,这就是为什么您看到标识符未找到
错误。编译器从头到尾检查您的文件,这意味着函数定义的位置很重要。在这种情况下,您可以在首次使用此函数之前移动其定义:
void rollDice()
{
...
}
void otherFunction()
{
// rollDice has been previously defined:
rollDice();
}
或者,您可以使用前向声明告诉编译器存在这样一个函数:
// function rollDice with the following prototype exists:
void rollDice();
void otherFunction()
{
// rollDice has been previously declared:
rollDice();
}
// definition of rollDice:
void rollDice()
{
...
}
还要注意的是,函数原型由名称指定,但也由返回值和参数指定:
这就是功能的区别<代码>intfoo()代码>和void foo()
是不同的函数,但由于它们只在返回值上不同,因此它们不能存在于同一范围内(有关更多信息,请参阅) 编译器从头到尾检查您的文件,这意味着函数定义的位置很重要。在这种情况下,您可以在首次使用此函数之前移动其定义:
void rollDice()
{
...
}
void otherFunction()
{
// rollDice has been previously defined:
rollDice();
}
或者,您可以使用前向声明告诉编译器存在这样一个函数:
// function rollDice with the following prototype exists:
void rollDice();
void otherFunction()
{
// rollDice has been previously declared:
rollDice();
}
// definition of rollDice:
void rollDice()
{
...
}
还要注意的是,函数原型由名称指定,但也由返回值和参数指定:
这就是功能的区别<代码>intfoo()代码>和void foo()
是不同的函数,但由于它们只在返回值上不同,因此它们不能存在于同一范围内(有关更多信息,请参阅) 摘自右侧的相关链接,为什么要编辑问题以包含答案?这个问题现在没有意义了。从右边的相关链接中可以看出,你为什么要编辑你的问题以包含答案?这个问题现在没有意义了。由于被调用函数放在调用函数之后,因此出现了相同的错误。更改顺序修复了它。由于被调用函数放在调用函数之后,因此出现了相同的错误。更改顺序可以修复它。