为什么 _sleep(1000) 不能在 Xcode 中编译?
Why won't _sleep(1000) compile in Xcode?
我有一个程序应该从 10 倒数到 0,每次倒数时应该等待一秒钟,然后使用 cin.flush() 刷新输出。教授在 class 中演示了这一点并且它完美地工作,但是,当我回到家时 Xcode 给我一个错误,说 _sleep(1000) 是使用未声明的标识符 '_sleep' - 这是不应该是这种情况,因为我导入了特殊命令,它只应该在 windows 编译器中使用 _sleep。
简而言之,这需要在 windows 和 mac 编译器中编译,我应该通过这些编译器定义来完成。但出于某种原因 Xcode 一直试图告诉我这是错误的。
#ifdef GPP
#include <unistd.h>
#else
#include <cstdlib>
#endif
int main()
{
for (int timer = 10; timer >= 0; timer--)
{
cout << timer;
cout.flush();
//compiler functions
#ifdef GPP
Sleep(1); //One second to sleep on GPP compilers
#else
_sleep(1000);//On windows 1000ms sleep time
#endif
cout << '\r';
}
}
你在任何地方定义过 GPP 吗?如果不是,那么代码将使用 _sleep(1000),它是 windows 特定的,不会在 mac 上工作。例如,如果像这样编译它应该可以工作:
g++ -DGPP
但是你还是需要把Sleep改成睡眠,因为也没有Sleep功能
#ifdef GPP
#include <unistd.h>
#else
#include <cstdlib>
#endif
#include <iostream>
using namespace std;
int main()
{
for (int timer = 10; timer >= 0; timer--)
{
cout << timer;
cout.flush();
//compiler functions
#ifdef GPP
sleep(1); //One second to sleep on GPP compilers
#else
_sleep(1000);//On windows 1000ms sleep time
#endif
cout << '\r';
}
}
睡眠和变体不可移植,它们是 OS 特定的。
这就是我们使用标准的原因:
std::this_thread::sleep_for (std::chrono::milliseconds(your time here));
我有一个程序应该从 10 倒数到 0,每次倒数时应该等待一秒钟,然后使用 cin.flush() 刷新输出。教授在 class 中演示了这一点并且它完美地工作,但是,当我回到家时 Xcode 给我一个错误,说 _sleep(1000) 是使用未声明的标识符 '_sleep' - 这是不应该是这种情况,因为我导入了特殊命令,它只应该在 windows 编译器中使用 _sleep。
简而言之,这需要在 windows 和 mac 编译器中编译,我应该通过这些编译器定义来完成。但出于某种原因 Xcode 一直试图告诉我这是错误的。
#ifdef GPP
#include <unistd.h>
#else
#include <cstdlib>
#endif
int main()
{
for (int timer = 10; timer >= 0; timer--)
{
cout << timer;
cout.flush();
//compiler functions
#ifdef GPP
Sleep(1); //One second to sleep on GPP compilers
#else
_sleep(1000);//On windows 1000ms sleep time
#endif
cout << '\r';
}
}
你在任何地方定义过 GPP 吗?如果不是,那么代码将使用 _sleep(1000),它是 windows 特定的,不会在 mac 上工作。例如,如果像这样编译它应该可以工作:
g++ -DGPP
但是你还是需要把Sleep改成睡眠,因为也没有Sleep功能
#ifdef GPP
#include <unistd.h>
#else
#include <cstdlib>
#endif
#include <iostream>
using namespace std;
int main()
{
for (int timer = 10; timer >= 0; timer--)
{
cout << timer;
cout.flush();
//compiler functions
#ifdef GPP
sleep(1); //One second to sleep on GPP compilers
#else
_sleep(1000);//On windows 1000ms sleep time
#endif
cout << '\r';
}
}
睡眠和变体不可移植,它们是 OS 特定的。 这就是我们使用标准的原因:
std::this_thread::sleep_for (std::chrono::milliseconds(your time here));