@@ -137,16 +137,32 @@ size_t cnc_print_str_c32(const ztd_char32_t* __str) ZTD_USE(ZTD_NOEXCEPT_IF_CXX)
137137ZTD_EXTERN_C_CLOSE_I_
138138
139139#define cnc_fprint_strn (_FILE, _STR_SIZE, _STR ) \
140- _ZTDC_CASCADING_GENERIC (*_STR, char , cnc_fprint_str_mcn(_FILE, _STR_SIZE, _STR), ztd_wchar_t, \
141- cnc_fprint_str_mwcn(_FILE, _STR_SIZE, _STR), ztd_char8_t, \
142- cnc_fprint_str_c8n(_FILE, _STR_SIZE, _STR), ztd_char16_t, \
143- cnc_fprint_str_c16n(_FILE, _STR_SIZE, _STR), ztd_char32_t, \
144- cnc_fprint_str_c32n(_FILE, _STR_SIZE, _STR))
145- #define cnc_fprint_str (_FILE, _STR ) \
146- _ZTDC_CASCADING_GENERIC (*_STR, char , cnc_fprint_str_mc(_FILE, _STR), ztd_wchar_t, \
147- cnc_fprint_str_mwc(_FILE, _STR), ztd_char8_t, cnc_fprint_str_c8(_FILE, _STR), \
148- ztd_char16_t, cnc_fprint_str_c16(_FILE, _STR), ztd_char32_t, \
149- cnc_fprint_str_c32(_FILE, _STR))
140+ _Generic (*(_STR), \
141+ ztd_char32_t: cnc_fprint_str_c32n(_FILE, (_STR_SIZE), (const ztd_char32_t *)(_STR)), \
142+ default: _Generic(*(_STR), \
143+ ztd_char16_t: cnc_fprint_str_c16n(_FILE, (_STR_SIZE), (const ztd_char16_t *)(_STR)), \
144+ default: _Generic(*(_STR), \
145+ ztd_char8_t: cnc_fprint_str_c8n( \
146+ _FILE, (_STR_SIZE), (const ztd_char8_t *)(_STR)), \
147+ default: _Generic(*(_STR), \
148+ ztd_wchar_t: cnc_fprint_str_mwcn( \
149+ _FILE, (_STR_SIZE), (const ztd_wchar_t *)(_STR)), \
150+ default: _Generic(*(_STR), \
151+ ztd_char_t: cnc_fprint_str_mcn( \
152+ _FILE, (_STR_SIZE), (const ztd_char_t *)(_STR)), \
153+ default: 0)))))
154+ #define cnc_fprint_str (_FILE, _STR ) \
155+ _Generic (*(_STR), \
156+ ztd_char32_t: cnc_fprint_str_c32(_FILE, (const ztd_char32_t *)(_STR)), \
157+ default: _Generic(*(_STR), \
158+ ztd_char16_t: cnc_fprint_str_c16(_FILE, (const ztd_char16_t *)(_STR)), \
159+ default: _Generic(*(_STR), \
160+ ztd_char8_t: cnc_fprint_str_c8(_FILE, (const ztd_char8_t *)(_STR)), \
161+ default: _Generic(*(_STR), \
162+ ztd_wchar_t: cnc_fprint_str_mwc(_FILE, (const ztd_wchar_t *)(_STR)), \
163+ default: _Generic(*(_STR), \
164+ ztd_char_t: cnc_fprint_str_mc(_FILE, (const ztd_char_t *)(_STR)), \
165+ default: 0)))))
150166#define cnc_print_strn (...) cnc_fprint_strn(stdout, __VA_ARGS__)
151167#define cnc_print_str (...) cnc_fprint_str(stdout, __VA_ARGS__)
152168
0 commit comments