Linux 内核中的 __EXPORTED_HEADERS__ 宏有什么用?

What is __EXPORTED_HEADERS__ macro from Linux kernel used for?

我在应用程序 makefile 的现有宏中遇到以下内容:__EXPORTED_HEADERS__ 添加到 gcc 的 cflags:CPPFLAGS+=-D__EXPORTED_HEADERS__ .

我没有找到代码中使用的宏本身。

我看到它在 Linux 内核中使用,虽然我不完全理解它在那里是如何使用的。

它有什么用,为什么有人会用这个定义的宏来编译他们的代码?

谢谢。

elixir saerch __EXPORTED_HEADERS__ -> https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/types.h#L9

有内核头文件供用户 space 使用。还有很多内核头文件只能在内核内部使用。

What is it used for,

__EXPORTED_HEADERS__ 用于防止 user-space 源文件,包括不适用于 user-space 的内核头文件。如果发生这种情况,则会显示警告。

why would someone compile their code with this macro defined?

在编译为内核时消除针对 user-space 的警告。