我要实现的目标:我想为某些baud rate -like tty* -mapped终端设置自定义UART值。

方法:到目前为止,我发现的唯一方法是使用位于struct termios2 header 中的<asm/termios>结构(如提到的here,第一个答案)。

我的解决方案到目前为止效果很好,但是现在我需要使用一些功能:

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>才能使用它们。

问题:如果我同时包含两个 header (<asm/termios.h><termios.h>),则编译器将对函数和结构的重新声明大喊大叫,他是对的。

如何在不使用一些晦涩的实践的情况下解决此问题(例如,将一个 header 之一包装在命名空间中,例如here)?

最佳答案



如果您发现 namespace 晦涩难懂,我不知道您怎么称呼它:

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

无论如何,这也使您摆脱了error: redefinition of 'struct termios'

关于c++ - 在同一项目中包含<termios.h>和<asm/termios.h>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37710525/

10-10 13:46