在VS裏編譯utf8格式的源代碼時,有時會出現以下錯誤:
E:\Projects\back_mdfactory\src\service_context.cpp(33): error C2001: 常量中有換行符
E:\Projects\back_mdfactory\src\service_context.cpp(33): fatal error C1057: 宏擴展中遇到意外的文件結束
原因是VS默認使用帶BOM的UTF8格式源碼編譯,遇到不帶BOM的UTF8源碼時,會當成ANSI格式源碼,導致出現一些莫名奇妙的錯誤。方法有幾種:
1、將源碼從不帶BOM的UTF8改爲帶BOM的UTF8源碼,這個會對跨平臺開發有影響,因爲Linux默認是不帶BOM源碼。
2、在源碼的中文字符串後面加一個空格或是其他字符,這個會強行改變源碼內容
3、修改VS工程屬性,C/C++ -> 命令行 的其他選項裏,增加/utf8,這個最合適,但貌似要求VS2015 Update 1以上版本。