当我尝试在Unix服务器上编译我的C ++代码时,我一直遇到异常,但这些行只有:
#ifndef WEIGHTED_GRAPH_H
#endif
,错误是:
In file included from Weighted_graph_tester.h:17,
from Weighted_graph_driver.cpp:18:
Weighted_graph.h:1: error: stray â\357â in program
Weighted_graph.h:1: error: stray â\273â in program
Weighted_graph.h:1: error: stray â\277â in program
Weighted_graph.h:1: error: stray â#â in program
In file included from Weighted_graph_tester.h:17,
from Weighted_graph_driver.cpp:18:
Weighted_graph.h:172:2: error: #endif without #if
Weighted_graph.h:1: error: âifndefâ does not name a type
任何想法?
答案 0 :(得分:6)
它告诉你文件中有以下字节:
Oct: 357 273 277
Hex: EF BB BF
这些是UTF-8编码文件中的byte order mark。显然,您的编译器不支持UTF-8源文件,在它们的开头有字节顺序标记。实际上,在UTF-8文件中使用字节顺序标记甚至没有意义,因为任何单个单元的大小只有一个字节。您应确保在没有它的情况下保存文件。
来自Unicode标准:
对于UTF-8既不要求也不建议使用BOM,但在使用BOM的其他编码形式或将BOM用作UTF-8签名的UTF-8数据转换的上下文中可能会遇到