如何从另一个作用域访问unistd写入



我正试图从一个类内部使用unistd.h编写,其中另一个"写";函数已经声明,但我不知道应该使用哪个范围解析程序,因为unistd不是库,所以unistd::write((不起作用。

如何从函数内部调用它?

// this won't compile
#include <stdio.h> // printf
#include <fcntl.h> 
#include <sys/stat.h> 
#include <unistd.h> 

class Fifo {
public:
void write(const char* msg, int len);
};
void Fifo::write(const char* msg, int len) {
int fd; 
const char* filename = "/tmp/fifotest"; 
mkfifo(filename, 0666); 
fd = open(filename, O_WRONLY|O_NONBLOCK);
write(fd, msg, len); 
close(fd); 
}   
int main() 
{ 
Fifo fifo;
fifo.write("hello", 5);
return 0;
} 

因此使用未命名的作用域write

write(fd, msg, len);

等于

this->write(fd, msg, len); 

CCD_ 2在CCD_ 4函数内部解析为CCD_。Do:

::write(fd, msg, len); 

使用全局范围。类似:

#include <cstdio> // use cstdio in C++
extern "C" {      // C libraries need to be around extern "C"
#include <fcntl.h> 
#include <sys/stat.h> 
#include <unistd.h> 
}
class Fifo {
public:
void write(const char* msg, int len);
};
void Fifo::write(const char* msg, int len) {
int fd; 
const char* filename = "/tmp/fifotest"; 
mkfifo(filename, 0666); 
fd = open(filename, O_WRONLY|O_NONBLOCK);
::write(fd, msg, len);  //here
close(fd); 
}   
int main() { 
Fifo fifo;
fifo.write("hello", 5);
return 0;
}

研究C++中的作用域、名称空间和作用域解析运算符以获取更多信息。

相关内容

  • 没有找到相关文章

最新更新