Чего я хочу добиться: я хочу установить кастом 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>
) компилятор будет кричать о функциях и повторном объявлении структуры, и он прав.
Как я могу решить эту проблему, не прибегая к какой-то непонятной практике (например, оборачивая один из заголовков в пространство имен, как уже упоминалось Вот)?
Как я могу решить эту проблему, не прибегая к какой-то непонятной практике (например, оборачивая один из заголовков в пространство имен, как уже упоминалось Вот)?
Если вы находите пространства имен неясными, я не знаю, как бы вы назвали это:
#define termios asmtermios
#include <asm/termios.h>
#undef termios
#include <termios.h>
В любом случае, это тоже избавит вас от error: redefinition of 'struct termios'
,
Других решений пока нет …