我正在使用更新和升级的ubuntu 14.0.4LTS。
我已经编写了一个串行通信代码。
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <time.h>
#include <errno.h>
#include <sys/stat.h>
#include <termios.h>
以上文件已包含在代码中。
当我编译代码时,它会返回错误&#34; O_RDWR未声明&#34; 如果我包含fcntl.h,则编译器返回错误&#34;参数1&#34;的不兼容类型,这意味着open函数需要const char *类型的参数。
struct termios TtyN;
open( TtyN, O_RDWR );
类型转换不合适。什么是正确的解决方案?
答案 0 :(得分:2)
open
采用路径字符串(char *
),而不是随机struct
。 struct termios
用于specific terminal control APIs,而不是任意文件操作函数。
也许您想open
"/dev/tty#"
之类的内容(#
替换为tty
)?
答案 1 :(得分:2)
man 2 open
将显示open()
所需的标头文件。即,
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
接下来我建议查看man 3 termios
。
答案 2 :(得分:1)
open的第一个参数是char * pathname,而不是struct termios类型。 不要那样打开它。