c - stddef.h 中的 NULL 定义
问题描述
我在我的电脑中发现了两个同名的头文件,内容不同:
/usr/src/linux-headers-4.19.0-13-common/include/uapi/linux/stddef.h
/usr/src/linux-headers-4.19.0-13-common/include/linux/stddef.h
为什么这些文件位于不同的文件夹中并且具有不同的内容?
创建 C++ 应用程序时应该使用哪个带有标题的文件夹?
第一个文件:/usr/src/linux-headers-4.19.0-13-common/include/uapi/linux/stddef.h
内容:
#ifndef _LINUX_STDDEF_H
#define _LINUX_STDDEF_H
#include <uapi/linux/stddef.h>
#undef NULL
#define NULL ((void *)0)
enum {
false = 0,
true = 1
};
#undef offsetof
#ifdef __compiler_offsetof
#define offsetof(TYPE, MEMBER) __compiler_offsetof(TYPE, MEMBER)
#else
#define offsetof(TYPE, MEMBER) ((size_t)&((TYPE *)0)->MEMBER)
#endif
/**
* sizeof_field(TYPE, MEMBER)
*
* @TYPE: The structure containing the field of interest
* @MEMBER: The field to return the size of
*/
#define sizeof_field(TYPE, MEMBER) sizeof((((TYPE *)0)->MEMBER))
/**
* offsetofend(TYPE, MEMBER)
*
* @TYPE: The type of the structure
* @MEMBER: The member within the structure to get the end offset of
*/
#define offsetofend(TYPE, MEMBER) \
(offsetof(TYPE, MEMBER) + sizeof_field(TYPE, MEMBER))
#endif
第二个文件:
/usr/src/linux-headers-4.19.0-13-common/include/linux/stddef.h
内容:
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <linux/compiler_types.h>
#ifndef __always_inline
#define __always_inline inline
#endif
解决方案
推荐阅读
- java - Payflow Pro:阻止重复发票 ID 不起作用
- python - 具有默认值的 Pydantic 字段?
- python - 网络刮刀使用python进行最后分页
- apache - 如何向 WHMCS 添加一些 url 重写?
- c++ - 如何在 C++ 的 WPF 上使用 OnMouseLeftButtonDown
- angular - Angular:未捕获的类型错误:无法读取未定义的属性“调用”
- amazon-athena - MYSQL 获取子字符串
- nsis - makensis 将 nsis 输出文件放在哪里?
- nginx - 如何使用邮件服务器 (iRedAdmin) 托管一些网站?
- javascript - 在 Backbone 中:在没有 href 的锚标记上显示光标:指针