我要实现的目标:我想为某些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/