2015-09-06 61 views
-3

我是C++的新手,我正在努力讓程序在執行某個函數之前等待幾分鐘。C++如何入睡?

我知道有很多關於它的話題,但是我的編譯器有問題。我似乎無法使用boost庫或線程庫。而且由於我無法使用線程庫,我也無法使用chrono庫。

我正在使用GNU GCC編譯器。我已安裝MinGW。它是過時的還是什麼?什麼是C++中最好的編譯器? 我的操作系統是Windows

+1

睡眠時間(X秒)https://msdn.microsoft.com/en-us/library/windows/desktop/ms686298(v=vs.85).aspx(順便說一句,你可以使用C usleep命令來ms睡眠) – AsfK

+0

什麼編譯器版本? 'g ++ --version'和你用什麼標誌來編譯? – Galik

+0

g ++(GCC)4.8.1標誌是[-s]和[-O2] – user3757605

回答

1

您可以使用此

#include <unistd.h> 
... 
usleep(1000); // Time in microseconds 

#include "stdafx.h" 
    #include "windows.h" 
    #include "iostream" 
    using namespace std; 
    int main(){ 
    int sleepTime = 1000; 
    Sleep(sleepTime); 
    return 0; 
    } 
+0

我試了一下(300000000);但它根本不睡覺。 stdafx.h不受支持。 – user3757605

1

<thread>只能先從C++ 11。

很可能您沒有正確的標誌來告訴GCC您希望啓用C++ 11支持,默認情況下它是禁用的。

命令行參數是-std=c++11

然後,您可以使用std::this_thread::sleep_for()使您的程序入睡。請注意,如果您的程序中只有一個線程,則可能會在此期間停止響應用戶操作。

+0

我啓用了C++ 11標誌,並且我沒有收到線程庫不再被發現的錯誤。但是,我仍然得到一個錯誤,說'std :: this_thread'還沒有被聲明'。 – user3757605

+0

你在使用Eclipse嗎?您可能需要在兩個地方啓用標誌 - 一次是Eclipse的解析器,另一個是編譯器。看到[這個答案](http://stackoverflow.com/a/9135135/425871)的一些細節,它可能會幫助你,如果是這樣的話。 – Steve