0

I found two same name header files in my computer with different content:

/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

Why these files are in different folders and has different content?

Which folder with headers I should use when I create C++ applications?

First file: /usr/src/linux-headers-4.19.0-13-common/include/uapi/linux/stddef.h

Content:

#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

Second file:

/usr/src/linux-headers-4.19.0-13-common/include/linux/stddef.h

Content:

/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#include <linux/compiler_types.h>

#ifndef __always_inline
#define __always_inline inline
#endif
vico
  • 17,051
  • 45
  • 159
  • 315

0 Answers0