xref: /DragonOS/kernel/src/common/compiler_attributes.h (revision 2813126e3190c9b3c1a836a647b259a7adbe0cf3)
1*2813126eSlogin #pragma once
2*2813126eSlogin #include <common/stddef.h>
3*2813126eSlogin 
4*2813126eSlogin // 当函数的返回值未被使用时,编译器抛出警告信息
5*2813126eSlogin #define __must_check __attribute__((__warn_unused_result__))
6*2813126eSlogin #define __force __attribute__((force))
7*2813126eSlogin // 无返回值的属性
8*2813126eSlogin #define __noreturn __attribute__((__noreturn__))
9*2813126eSlogin /*
10*2813126eSlogin  * Optional: only supported since clang >= 14.0
11*2813126eSlogin  *
12*2813126eSlogin  *   gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-error-function-attribute
13*2813126eSlogin  */
14*2813126eSlogin #if __has_attribute(__error__)
15*2813126eSlogin #define __compiletime_error(msg) __attribute__((__error__(msg)))
16*2813126eSlogin #else
17*2813126eSlogin #define __compiletime_error(msg)
18*2813126eSlogin #endif
19*2813126eSlogin 
20*2813126eSlogin typedef uint8_t __attribute__((__may_alias__)) __u8_alias_t;
21*2813126eSlogin typedef uint16_t __attribute__((__may_alias__)) __u16_alias_t;
22*2813126eSlogin typedef uint32_t __attribute__((__may_alias__)) __u32_alias_t;
23*2813126eSlogin typedef uint64_t __attribute__((__may_alias__)) __u64_alias_t;