我正在编写内核模块的标头。标头是模块已知的,但也被用户空间中的呼叫者使用。这是一个问题,因为使用的某些类型应该包含在不同的文件中,具体取决于标头当前是在用户空间还是内核空间中(或者this问题让我想到)。
我不想保留两个单独的头文件,所以我一直在考虑这样的解决方案:
#ifndef IN_KERNEL
#include <stdint.h>
#else
#include <linux/types.h>
在我的内核代码中的某处定义了IN_KERNEL。是否有预处理器常量已经这样做了?
答案 0 :(得分:3)
从阅读this开始,用于此目的的现有常量似乎是__KERNEL__
。
#ifndef __KERNEL__
#include <stdint.h>
#else
#include <linux/types.h>
#endif