我正在尝试在 Visual Studio 中创建倒计时器。
我尝试使用“延迟”函数,就像编写 Arduino 程序一样,但错误列表显示这是一个无法识别的函数。
最佳答案
std::this_thread::sleep_for
是标准等效值。它将当前线程挂起指定的持续时间。
例如,这将打印“Before”,等待一秒钟,然后打印“After”:
#include <chrono>
#include <thread>
#include <iostream>
int main() {
std::cout << "Before" << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(1));
std::cout << "After" << std::endl;
}
在事件驱动的上下文(例如 GUI 线程)中使用此方法时要小心,因为它可能会阻止事件得到及时处理,并导致应用程序挂起或被操作系统杀死。 GUI 工具包通常提供自己的安全替代方案,让它们继续处理事件并避免该问题。
各种平台API也提供了类似的功能。最常见的是,您会遇到 Windows Sleep
或 POSIX sleep
, usleep
,和 nanosleep
。为了可移植性,最好使用标准 std::this_thread::sleep_for
,但是如果平台函数由于某种原因不可用(使用 C++03 或更早版本,没有标准),则可以使用平台函数图书馆等)。
关于c++ - Arduino "delay"函数的常规 C++ 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56604638/