我需要转账fixp_t
使用 <linux/fixp-arith.h>
从内核模块到客户端应用程序的键入数字(定义在 s16
,最初是 ioctl
) .数据类型非常重要,如果变量大小不同 - 结果可能非常危险。
如果我包括 <linux/fixp-arith.h>
在内核和客户端应用程序源代码中,客户端应用程序无法编译,因为它找不到 linux header 。
另一方面,gcc -I/usr/src/linux-headers-3.16.0-4-common/include/ app.c -o app
不起作用,因为 <linux/types.h>
重新定义现有类型,编译失败。
另一方面,我害怕自己指定任何数据类型,因为在每个拱门上 s16
,等等 fixp_t
可能不同。
如何解决这个问题?
最佳答案
来自 gcc 手册页:
-I dir
Add the directory dir to the list of directories to be searched for header files.
因此,要添加您将使用的目录:
-I /usr/src/linux-headers-3.16.0-4-common/include/
但是,我认为用户空间程序不应该包含内核头文件。如果您的内核模块有一个用户空间 API,那么该 API 应该在一个与内核头文件分开的头文件中声明,并且只依赖于标准头文件。
关于c - 如何在c中为非内核应用程序指定内核头文件的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35013118/