![](/img/trans.png)
[英]Why can't I get a loop to spin for less than a millisecond in C++ on Windows with Chrono?
[英]Why can't I use chrono library?
您好,我正在用線程做一些簡單的練習,我希望我的 t1 休眠 2 秒,但我收到此錯誤:無法找到數字文字運算符 'operator""s'
這怎么可能?
#include <iostream>
#include <chrono>
#include <thread>
void printt1(int i)
{ std::this_thread::sleep_for(2s);
std::cout << i<<std::endl;
}
int main()
{
std::thread t1(printt1,1);
std::thread t2([](std::thread& t1) { t1.join();std::cout << 2<<std::endl; });
std::thread t3([](std::thread& t2) { t2.join();std::cout << 3<<std::endl; });
t3.join();
return 0;
}
從https://en.cppreference.com/w/cpp/symbol_index/chrono_literals :
這些運算符在命名空間
std::literals::chrono_literals
中聲明,其中literals
和chrono_literals
都是內聯命名空間。 可以通過using namespace std::literals
、using namespace std::chrono_literals
和using namespace std::literals::chrono_literals
來訪問這些運算符。
所以只需添加using namespace std::literals::chrono_literals;
到你的文件,你應該對 go 很好。
編輯:
無論上述問題如何,您都錯誤地構造了線程t2
和t3
。 而不是接受std::thread&
作為參數的 lambda ,您可能打算通過引用在 lambda 中捕獲它:
std::thread t1(printt1,1);
std::thread t2([&t1]() { t1.join();std::cout << 2<<std::endl; });
std::thread t3([&t2]() { t2.join();std::cout << 3<<std::endl; });
t3.join();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.