Чего я хочу добиться: я хочу установить пользовательские значения baud rate
для некоторых tty*
-подобных UART
-сопоставленных терминалов.
Как: единственный способ, который я нашел, — это использовать структуру struct termios2
, которая находится в заголовке<asm/termios>
(как уже упоминалось здесь, первый ответ).
Мое решение работает очень хорошо, но теперь мне нужно использовать некоторые функции:
speed_t cfgetispeed(const struct termios *);
int tcdrain(int);
int tcflow(int, int);
int tcflush(int, int);
int tcgetattr(int, struct termios *);
pid_t tcgetsid(int);
int tcsendbreak(int, int);
int tcsetattr(int, int, struct termios *);
Проблема в том, что в <asm/termios.h>
таких функций нет, и мне нужно включить <termios.h>
для возможности их использования.
Проблема: если я включу оба заголовка (<asm/termios.h>
и <termios.h>
), компилятор будет кричать о переобъявлении функций и структур, и он прав.
Как я могу решить эту проблему, не используя какую-то непонятную практику (например, обернув один из заголовков в пространство имен, как упомянуто здесь)?
<asm/termios.h>
через прокси-заголовок, который скрывает конфликтующие определения с макросами. (2) это самый сложный способ. (3) по крайней мере так же неясно, как и (1), и это тоже хак. - person Mike Kinghan   schedule 10.06.2016