Включая & lt; termios.h & gt; и & lt; asm / termios.h & gt; в том же проекте

Чего я хочу добиться: я хочу установить кастом 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>) компилятор будет кричать о функциях и повторном объявлении структуры, и он прав.

Как я могу решить эту проблему, не прибегая к какой-то непонятной практике (например, оборачивая один из заголовков в пространство имен, как уже упоминалось Вот)?

3

Решение

Как я могу решить эту проблему, не прибегая к какой-то непонятной практике (например, оборачивая один из заголовков в пространство имен, как уже упоминалось Вот)?

Если вы находите пространства имен неясными, я не знаю, как бы вы назвали это:

#define termios asmtermios
#include <asm/termios.h>
#undef  termios
#include <termios.h>

В любом случае, это тоже избавит вас от error: redefinition of 'struct termios',

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]