C中的执行和输入字符集不同

时间:2016-01-06 19:59:57

标签: c gcc

我想了解C标准。特别是这部分来自C99:

  

§5.1.1.21.5字符常量和字符串文字中的每个源字符集成员和转义序列都转换为执行字符集的相应成员;如果没有相应的成员,则将其转换为除null(宽)字符以外的实现定义的成员。

我制作了这个示例代码,

#include <stdio.h>

int main(void)
{
    printf("Ø");
}

当我尝试用-std=C99 -fexec-charset=ASCII的GCC编译它时,我收到错误

foo.c:5:9: error: converting to execution character set: Invalid or incomplete multibyte or wide character
  printf("Ø");
         ^

不应该将'Ø'转换为实现定义的ASCII字符并根据上面的引用进行编译吗?

1 个答案:

答案 0 :(得分:0)

我有一个带有Unicode字符的头文件在Visual Studio 2015中运行良好,但是在GCC中无法编译此错误,我尝试使用Notepad ++打开它,单击编码菜单,并将其转换为UTF-8 ,这似乎适用于我的GCC编译。using Notepad++ to chanage encoding