calling fdopen:错误的文件描述符

删除  当前目录下的所有*.gch文件
rm *.gch 
然后再次编译  
就可以了
gcc会预编译头文件成gch文件以节省编译时间,如果改变了头文件源码而不重新编译的话,gcc还会使用老的gch文件。但是当加选项-E只做预编译的时,gcc会使用最新的头文件源码。这样就产生了编译生成的结果与预编译生成的结果不一样的现象。

你可能感兴趣的:(gcc)