GCC编译C代码时报错标识符前多出e字符原因问询
乱码原因
你看到的标识符前后多余的字符不是GCC对代码标识符的识别错误,是终端渲染控制字符失败导致的乱码:
GCC默认会给编译诊断信息里的函数名、关键字加高亮、加粗的格式修饰,这类修饰靠不可见的ANSI转义控制符实现。如果你用的终端不支持ANSI转义序列,或者是将编译输出重定向到普通文本文件后再打开查看,这些不可见的控制符就会被解析为可显示的乱码:代表开启格式的ESC控制符在部分环境下会被显示为e,代表结束格式的控制符尾部字符会被显示为f,最终就出现了emainf、eclosef这类异常显示内容。
验证方案
编译时关闭GCC的诊断信息格式修饰即可消除这类乱码,执行以下编译命令:
gcc -fno-diagnostics-color packet_receive.c
此时输出的报错信息里的标识符就会正常显示为main、close、pclose,没有多余字符。
补充说明
你代码里的隐式声明警告,补充引入close函数对应的头文件即可解决,在代码开头添加:
#include <unistd.h>
内容的提问来源于stack exchange,提问作者Cprogrammer
相关产品推荐
相关产品推荐

