我正在开发一个需要公开controller::open()
函数的控件c ++库。但是在这个函数中我必须调用POSIX::open()
函数来打开文件描述符。编译器抱怨我向控制器函数发送无效参数,并且不理解我想调用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):
无效参数:'候选人是:int open()'
使用::open
将调用更改为打开到全局命名空间无济于事。因为我看到库已经包含open函数,我收到以下错误:
无效参数:'候选者是:int open(const char *,int,...)
ImageCtrl * open(image)''
有什么想法吗?
答案 0 :(得分:1)
无效参数:&#39;候选人是:int open(char *,int,...)
这非常可疑。从哪里获得open
的声明?您是否包含<fcntl.h>
?
原型应该看起来像这样:
int open(const char *, int, ...);
const char *
会匹配您传递的字符串文字,但char *
显然不会,因为字符串文字不可写。