XFusion API v1.3.0
载入中...
搜索中...
未找到
xf_predef.h
浏览该文件的文档.
1
12#ifndef __XF_PREDEF_H__
13#define __XF_PREDEF_H__
14
15/* ==================== [Includes] ========================================== */
16
17#include "xf_common_config.h"
18
28#ifdef __cplusplus
29extern "C" {
30#endif
31
32/* ==================== [Defines] =========================================== */
33
34#if !defined(__FILENAME__)
35#if defined(__GNUC__)
39#define __FILENAME__ (__builtin_strrchr(__FILE__, '/') \
40 ? (__builtin_strrchr(__FILE__, '/') + 1) \
41 : (__FILE__))
42#else
43#define __FILENAME__ __FILE__
44#endif /* defined(__GNUC__) */
45#endif /* !defined(__FILENAME__) */
46
50#ifndef NC
51#define NC (-1)
52#endif
53
54/* ==================== [Typedefs] ========================================== */
55
56/* ==================== [Global Prototypes] ================================= */
57
58/* ==================== [Macros] ============================================ */
59
60#ifndef UNUSED
64#define UNUSED(x) do { (void)(x); } while(0)
65#endif
66
67#ifndef CONCAT
71#define CONCAT(a, b) a##b
72#endif
73
74#ifndef CONCAT3
78#define CONCAT3(a, b, c) a##b##c
79#endif
80
81#if !defined(XCONCAT)
86#define XCONCAT(a, b) CONCAT(a, b)
87#endif
88
89#if !defined(XCONCAT3)
94#define XCONCAT3(a, b, c) CONCAT3(a, b, c)
95#endif
96
97#ifndef STR
102#define STR(x) #x
103#endif
104
105#ifndef XSTR
110#define XSTR(x) STR(x)
111#endif
112
113#ifndef xf_offsetof
121#define xf_offsetof(type, member) ((size_t)&((type *)0)->member)
122#endif
123
124#ifndef xf_container_of
161#define xf_container_of(ptr, type, member) \
162 ((type *)((char *)(ptr) - xf_offsetof(type, member)))
163#endif
164
165#ifndef ARRAY_SIZE
173#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
174#endif
175
176#ifdef __cplusplus
177} /*extern "C"*/
178#endif
179
185#endif /* __XF_PREDEF_H__ */
预定义. xf_attr.h 等头文件通过包含本文件减少对其余外部文件的直接依赖. 如: xfconfig.h.