奇怪的CPP编译错误

如果编译CPP程序时出现类似如下的错误:

1
2
3
/usr/bin/locale:111:128: error: stray ‘\\21in program 
/usr/bin/locale:111:130: error: stray ‘\\3in program
/usr/bin/locale:111:136: error: stray ‘\\376in program

那是因为有代码包含了locale头文件:

1
#include <locale>

而编译时include搜索路径包含了/usr/bin,导致编译器找到了/usr/bin/locale这个二进制程序当做了locale头文件,所以有时候就是这么莫名其妙,include路径为什么要包含/usr/bin呢,这是错误的。

仔细的检查你的
CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
等环境变量,还有编译指令的-I参数吧

我就是因为包含CPATH时写成了PATH,真无语了。