2013-04-30 93 views
8

我想實現一些圖形,但我有麻煩調用函數int rollDice()顯示在最底部,我不知道如何解決這個問題?任何想法...我得到一個錯誤錯誤C3861:'rollDice':標識符未找到。錯誤C3861:'rollDice':標識符未找到

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; 
} 

更新功能rollDice

int rollDice(); 

+3

採取相關鏈接到正確的,http://stackoverflow.com/questions/12723107/error-c3861-initnode-identifier-not-found?rq=1 – chris 2013-04-30 01:32:29

+1

爲什麼你編輯你的問題,包括答案?這個問題現在沒有意義。 – caps 2016-08-11 19:57:50

回答

25

編譯器會從頭到尾查看您的文件,這意味着您的函數定義的位置很重要。在這種情況下,你可以移動這個函數的定義,使用前第一次:

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() 
{ 
    ... 
} 

還要注意的是函數的原型是由規定,也返回值參數

void foo(); 
int foo(int); 
int foo(int, int); 

這是功能如何區別int foo();void foo();是不同的功能,但由於它們僅在返回值上有所不同,所以它們不能在同一範圍內存在(更多信息,請參閱Function Overloading)。

+0

我的項目沒有工作,直到我改變'無效'的順序。謝謝!!! +1。 – 2013-09-27 17:10:29

2

認沽聲明OnBnClickedButton1之前或者乾脆OnBnClickedButton1之前移動rollDice函數的定義。

原因是在您當前的代碼中調用rollDiceOnBnClickedButton1,編譯器還沒有看到函數,這就是爲什麼您看到identifier not found錯誤。

相關問題