brintos

brintos / llvm-project-archived public Read only

0
0
Text · 867 B · debf441 Raw
21 lines · c
1//===-- Definition of the containerof macro -------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIBC_MACROS_CONTAINEROF_MACRO_H10#define LLVM_LIBC_MACROS_CONTAINEROF_MACRO_H11 12#include "offsetof-macro.h"13 14#define __containerof(ptr, type, member)                                       \15  ({                                                                           \16    const __typeof(((type *)0)->member) *__ptr = (ptr);                        \17    (type *)(void *)((const char *)__ptr - offsetof(type, member));            \18  })19 20#endif // LLVM_LIBC_MACROS_CONTAINEROF_MACRO_H21