奇思妙想 · 2024年 4月 7日 0

指定并编译编码格式为UTF-16LE源代码,依然报错?

51 次浏览

编译指令:gcc -finput-charset=UTF-16 1.c, 一个很典型的原因是源代码包含了头文件,且并不是UTF-16LE, 而是典型的ASCII码,和UTF-8兼容,但和UTF-16不兼容,导致编译器按UTF-16LE解析头文件! 典型的错误示例如下:

/usr/include/stdc-predef.h:1:1: error: stray ‘\342’ in program
1 | /* Copyright (C) 1991-2022 Free Software Foundation, Inc.

如果有包含头文件,可以暂时删掉,并利用extern引用对应的函数或声明来暂时让编译器通过。例如,如果包含了stdio.h使用printf, 可以暂时用extern int printf(const char *fmt, ...);