如何正确使用`__attribute __((format(printf,x,y)))`for C11 U"unicode literals"?

tor*_*gen 5 c unicode gcc c11 unicode-literals

我正在将一个应用程序移植char*到使用UCS4,因为它是内部的Unicode表示.我使用C11 U"unicode literals"来定义字符串,它们扩展为数组char32_t,uint32_t基本上是.

问题在于正确的注释printf函数.作为"格式"不再char*,编译器拒绝进一步编译它,以及它会不会满意char32_t *,而不是char *%s格式,我想.

我根本不依赖于stdlib *printf系列,因此格式化完全由我的实现完成.

什么是正确的解决方案,除了完全禁用此属性?

Tom*_*mey 1

目前在 GCC 中还没有办法做到这一点。这是一个已知错误,请参阅GCC bug 64862