[詳解] 1 #ifndef _CHECK_ARG_INCLUDED_
2 #define _CHECK_ARG_INCLUDED_
91 #define CHECK_VAL(tag, type, v) check_val_##tag##type(v)
92 #define CHECK_PTR(tag, type, v) check_ptr_##tag##type(v)
93 #define CHECK_CPTR(tag, type, v) check_cptr_##tag##type(v)
94 #define CHECK_PPTR(tag, type, v) check_pptr_##tag##type(v)
99 #define CHECK_VAL_HELPER_DCL(tag, type) \
100 static inline type check_val_##tag##type(type v) { return v; }
101 #define CHECK_PTR_HELPER_DCL(tag, type) \
102 static inline type *check_ptr_##tag##type(type *v) { return v; }
103 #define CHECK_CPTR_HELPER_DCL(tag, type) \
104 static inline const type *check_cptr_##tag##type(const type *v) \
106 #define CHECK_PPTR_HELPER_DCL(tag, type) \
107 static inline type **check_pptr_##tag##type(type **v) { return v; }
117 #define CHECK_VAL(tag, type, v) ((type) (1 ? (v) : (CHECK_VAL_DUMMY(type) = (v))))
118 #define CHECK_PTR(tag, type, v) ((type *) (1 ? (v) : (CHECK_PTR_DUMMY(type) = (v))))
119 #define CHECK_CPTR(tag, type, v) \
120 ((const type *) (1 ? (v) : (CHECK_CPTR_DUMMY(type) = (v))))
121 #define CHECK_PPTR(tag, type, v) ((type **) (1 ? (v) : (CHECK_PPTR_DUMMY(type) = (v))))
131 #define CHECK_VAL_HELPER_DCL(tag, type) extern type CHECK_VAL_DUMMY(type)
132 #define CHECK_PTR_HELPER_DCL(tag, type) extern type *CHECK_PTR_DUMMY(type)
133 #define CHECK_CPTR_HELPER_DCL(tag, type) extern const type *CHECK_CPTR_DUMMY(type)
134 #define CHECK_PPTR_HELPER_DCL(tag, type) extern type **CHECK_PPTR_DUMMY(type)
139 #define CHECK_VAL_DUMMY(type) check_val_dummy_##type
140 #define CHECK_PTR_DUMMY(type) check_ptr_dummy_##type
141 #define CHECK_CPTR_DUMMY(type) check_cptr_dummy_##type
142 #define CHECK_PPTR_DUMMY(type) check_pptr_dummy_##type