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

时间:2014-11-04 18:46:11

标签: c gcc unicode c11 unicode-literals

我将应用程序从使用char*移植到所有地方,并使用UCS4作为其内部Unicode表示。我使用C11的U"unicode literals"来定义字符串,这些字符串扩展为char32_t的数组,基本上是uint32_t

问题在于正确地注释printf - 就像函数一样。作为"格式"不再是char*,编译器拒绝进一步编译它,我认为它对char32_t *而不是char *格式的%s感到满意。

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

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

1 个答案:

答案 0 :(得分:1)

GCC目前无法做到这一点。这是一个已知的错误,请参阅GCC bug 64862