我应该如何处理在不同发行版上需要不同的包含?
在某些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>
或者这是不好的做法?