通过创建一个决定使用哪种产品来互换使用Sleep和usleep

Using sleep and usleep interchangeably by creating a class that decides which one to use

本文关键字:互换 usleep Sleep 一个 决定 创建      更新时间:2023-10-16

我将如何在标题文件中实现睡眠和usleep。这是我到目前为止尝试过的方法,但它不起作用。我还没有精通C 。我知道可以通过发表评论和每个浏览器使用特定的代码来在HTML中执行类似的操作。

这是我正在练习的样本:

help.cpp

#include <iostream>
#include "pause.h"
using namespace std;

int main() {
pause p;    
cout << "Hello";
p.pause(5000)
cout << " World";
}

建议使用#ifdef #else #endif在Windows和Linux/unix 之间工作的另一个线程中的某人

暂停

#ifdef _WIN32
    #include <windows.h>

class pause
{
    public:
        void pause(unsigned milliseconds)
        {
            Sleep(milliseconds);
        }
};
#else
        #include <unistd.h>
class pause
{
    public:
        void pause(unsigned milliseconds)
        {
            usleep(milliseconds * 1000); // takes microseconds
        }
};
#endif

不知何故,我必须错误地编写类,因为运行我的.cpp文件,它没有识别我尝试过创建的类或对象。

错误

Running /home/ubuntu/workspace/help.cpp
In file included from /home/ubuntu/workspace/help.cpp:2:0:
/home/ubuntu/workspace/pause.h:20:41: error: return type specification for constructor invalid
         void pause(unsigned milliseconds)
                                         ^
/home/ubuntu/workspace/help.cpp: In function ‘int main()’:
/home/ubuntu/workspace/help.cpp:9:7: error: expected ‘;’ before ‘p’
 pause p;    
       ^
/home/ubuntu/workspace/help.cpp:13:1: error: ‘p’ was not declared in this scope
 p.pause(5000)
 ^
/home/ubuntu/workspace/help.cpp:15:1: error: expected ‘;’ before ‘cout’
 cout << " World";
 ^

Process exited with code: 1

您的成员函数不能与类同一名称。pause是类名称,因此编译器将您的pause功能(pause::pause)视为构造函数。

您可以重命名为Pause,然后p.pause将调用有效的Pause::pause函数。

好吧,我现在不在Windows计算机附近,但是看来您误解了一些类符号。您为什么用参数实现了构造函数pause::pause,但请勿致电?为什么您要调用不存在的成员函数pause::pause,更不用说它的名称与class pause一样?你让他们感到困惑。

让我简化情况以说明这一点,让您看看。如果要打印号码,请通过

设置PrintNumber

test.cpp:

#include <iostream>
#include "print-num.h"
int main(void)
{
   PrintNumber pr;
   pr.printMe(5000);
}

print-num.h:

#ifndef _PRINTNUM_
#define _PRINTNUM_
#include <iostream>
class PrintNumber
{
public:
   explicit PrintNumber(){};
   ~PrintNumber(){};
   void printMe(unsigned num) { std::cout << num << "n"; }
};
#endif

这将继续。

用您的Sleep()替换我的打印号码,然后重试?您可以使用构造函数Pause::Pause(void)和成员函数Pause::sleepNow(unsigned)或类似的成员函数命名Pause