2016-05-15 87 views
0

如何在do...while循環內調用一次函數後結束函數?例如,在下面的代碼中,我希望myfunc()僅被調用一次,然後不會在循環中再次調用。那可能嗎?是否可以結束放置在循環外的循環中的函數?

 do{ 
      myfunc(); 

      glClear(GL_COLOR_BUFFER_BIT); 
      glDisable(GL_DEPTH_TEST); 
      glMatrixMode(GL_PROJECTION); 
      glLoadIdentity(); 
      glOrtho(0, fb_width, fb_height, 0, 0, 1); 
      glMatrixMode(GL_MODELVIEW); 

      drawSomething(); 

      glfwSwapBuffers(w); 
      glfwPollEvents(); 
      } 
     while (something); 
+2

爲什麼不把它放在循環開始之前,還是你的實際代碼比這更復雜? – OldBoyCoder

回答

1

要麼喲可以把它放在while循環

在此之前,也可以認爲存儲函數是否已經執行或沒有一個標誌變量。

int flag = 0; 

do { 

    if(flag==0){ 
     myfunc(); 
     flag=1; 
    } 
    ... // Rest of the loop 

} 
0

通常可以使用一個靜態變量來計算第一遍。實現可以取決於它是在一個調用中還是在一個回調中。

static int first = 0; 

do{ 
    if(!first){ 
     myfunc(); 
     first = 1; 
     } 
    glClear(GL_COLOR_BUFFER_BIT); 
    // the rest of your code 

}while something; 

first = 0; //or not zero it if you want to remember the state