gpt4 book ai didi

c++ - 将 POSIX::open 函数关联到命名空间

转载 作者:行者123 更新时间:2023-11-28 04:57:09 25 4
gpt4 key购买 nike

我正在开发一个需要公开 controller::open() 函数的控制 C++ 库。但是在这个函数中,我必须调用 POSIX::open() 函数来打开文件描述符。编译器提示我向 Controller 函数发送无效参数并且不理解我想调用 POSIX open() 文件函数。

这是我的代码:

类声明:

class PosixReadController {  
int open();
}

实现:

#include <stdio.h>   /* Standard input/output definitions */
#include <string.h> /* String function definitions */
#include <unistd.h> /* UNIX standard function definitions */
#include <fcntl.h> /* File control definitions */
#include <errno.h> /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */

int PosixReadController::open()
{
int fd = open("/dev/ttyf1", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd == -1)
{
/*
* Could not open the port.
*/

perror("open_port: Unable to open /dev/ttyf1 - ");
}
else
fcntl(fd, F_SETFL, 0);

return fd;
}

错误信息( eclipse ):

Invalid Arguments: 'Candidates are: int open()'

使用 ::open 更改对全局命名空间的打开调用没有帮助。因为我看到库已经包含 open 函数,所以出现以下错误:

Invalid Arguments: 'Candidates are: int open(const char*, int, ...)
ImageCtrl* open(image) ''

有什么想法吗?

最佳答案

Invalid Arguments: 'Candidates are: int open(char*, int, ...)

这非常可疑。你从哪里得到这个声明 open ?你有没有包括<fcntl.h>

原型(prototype)实际上应该是这样的:

int open(const char *, int, ...);

const char *会匹配您传递的字符串文字,但是 char *显然不是,因为字符串文字是不可写的。

关于c++ - 将 POSIX::open 函数关联到命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46911182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com