系统包括不完全一致的分布

时间:2017-12-08 15:44:37

标签: c++ linux

简短的问题

我应该如何处理在不同发行版上需要不同的包含?

更多详情

在某些C ++代码中,我包括像这样的ioctl:

#include <sys/ioctl.h>

由此我使用了不同的东西,包括TCSETS2。在Arch Linux上包含sys/ioctl.h后,我发现TCSETS2中定义了asm-generic/ioctls.h。到目前为止一切都很好。

现在,在Alpine Linux上构建时,它抱怨TCSETS2

  

错误:未在此范围内声明'TCSETS2'

再次查看包含,TCSETS2也在asm-generic/ioctls.h中定义。但是,此时sys/ioctl.h不会包括generic/ioctls.h

我该如何处理?我是否应该同时包含两者,希望它不会破坏某些发行版的编译?像下面的东西?

#include <asm-generic/ioctls.h>
#include <sys/ioctl.h>

或者这是不好的做法?

1 个答案:

答案 0 :(得分:0)

TCSETS2未记录here 表明它是一个特定于实现的功能。从评论中,切换到文档中的TCSETS解决了这个问题。