我是C++
的新手,我正在努力讓程序在執行某個函數之前等待幾分鐘。C++如何入睡?
我知道有很多關於它的話題,但是我的編譯器有問題。我似乎無法使用boost庫或線程庫。而且由於我無法使用線程庫,我也無法使用chrono庫。
我正在使用GNU GCC
編譯器。我已安裝MinGW
。它是過時的還是什麼?什麼是C++
中最好的編譯器? 我的操作系統是Windows
。
我是C++
的新手,我正在努力讓程序在執行某個函數之前等待幾分鐘。C++如何入睡?
我知道有很多關於它的話題,但是我的編譯器有問題。我似乎無法使用boost庫或線程庫。而且由於我無法使用線程庫,我也無法使用chrono庫。
我正在使用GNU GCC
編譯器。我已安裝MinGW
。它是過時的還是什麼?什麼是C++
中最好的編譯器? 我的操作系統是Windows
。
您可以使用此
#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;
}
我試了一下(300000000);但它根本不睡覺。 stdafx.h不受支持。 – user3757605
<thread>
只能先從C++ 11。
很可能您沒有正確的標誌來告訴GCC您希望啓用C++ 11支持,默認情況下它是禁用的。
命令行參數是-std=c++11
。
然後,您可以使用std::this_thread::sleep_for()
使您的程序入睡。請注意,如果您的程序中只有一個線程,則可能會在此期間停止響應用戶操作。
我啓用了C++ 11標誌,並且我沒有收到線程庫不再被發現的錯誤。但是,我仍然得到一個錯誤,說'std :: this_thread'還沒有被聲明'。 – user3757605
你在使用Eclipse嗎?您可能需要在兩個地方啓用標誌 - 一次是Eclipse的解析器,另一個是編譯器。看到[這個答案](http://stackoverflow.com/a/9135135/425871)的一些細節,它可能會幫助你,如果是這樣的話。 – Steve
睡眠時間(X秒)https://msdn.microsoft.com/en-us/library/windows/desktop/ms686298(v=vs.85).aspx(順便說一句,你可以使用C usleep命令來ms睡眠) – AsfK
什麼編譯器版本? 'g ++ --version'和你用什麼標誌來編譯? – Galik
g ++(GCC)4.8.1標誌是[-s]和[-O2] – user3757605