一、 运行代码分析
运行代码分析结果如下:
1>------ 已启动全部重新生成: 项目: suduku_without_gui, 配置: Release Win32 ------
1>header.cpp
1>interpretor.cpp
1>SudokuChecker.cpp
1>SudokuMaker.cpp
1>SudokuPrinter.cpp
1>SudokuReader.cpp
1>E:\github\software_engineering_sudoku\suduku_without_gui\suduku_without_gui\interpretor.cpp(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
1>SudokuSolver.cpp
1>suduku_without_gui.cpp
1>正在编译...
1>E:\github\software_engineering_sudoku\suduku_without_gui\suduku_without_gui\SudokuReader.cpp(73,59): warning C4018: “>”: 有符号/无符号不匹配
1>正在生成代码
1>Previous IPDB not found, fall back to full compilation.
1>All 50 functions were compiled because no usable IPDB/IOBJ from previous compilation was found.
1>已完成代码的生成
1>suduku_without_gui.vcxproj -> E:\github\software_engineering_sudoku\suduku_without_gui\Release\suduku_without_gui.exe
1>已完成生成项目“suduku_without_gui.vcxproj”的操作。
========== 全部重新生成: 成功 1 个,失败 0 个,跳过 0 个 ==========
二、 问题总结
1. 文件编码格式不正确
问题描述
>E:\github\software_engineering_sudoku\suduku_without_gui\suduku_without_gui\interpretor.cpp(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
原因
工程文档都是以UTF-8带签名格式进行保存,该文件是UTF-8无签名编码。
解决方案
将该文件另存为UTF-8格式
2. 符号不匹配
问题描述
E:\github\software_engineering_sudoku\suduku_without_gui\suduku_without_gui\SudokuReader.cpp(73,59): warning C4018: “>”: 有符号/无符号不匹配
原因
SudokuReader::num_bytes_of_sudoku_infile * BUFF_SIZE > n_bytes_read
该大于号的左边是int类型,而比较符的右边是DWORD类型,DWORD是unsigned long类型
解决方案
由于可以确保SudokuReader::num_bytes_of_sudoku_infile * BUFF_SIZE不会超过int的表示范围,因此可以将其向上提升为DWORD类型,不建议强制类型转换n_bytes_read为int类型,避免不必要的错误。
三、 解决后效果
1>------ 已启动全部重新生成: 项目: suduku_without_gui, 配置: Release Win32 ------
1>header.cpp
1>interpretor.cpp
1>SudokuChecker.cpp
1>SudokuMaker.cpp
1>SudokuPrinter.cpp
1>SudokuReader.cpp
1>SudokuSolver.cpp
1>suduku_without_gui.cpp
1>正在编译...
1>正在生成代码
1>Previous IPDB not found, fall back to full compilation.
1>All 50 functions were compiled because no usable IPDB/IOBJ from previous compilation was found.
1>已完成代码的生成
1>suduku_without_gui.vcxproj -> E:\github\software_engineering_sudoku\suduku_without_gui\Release\suduku_without_gui.exe
========== 全部重新生成: 成功 1 个,失败 0 个,跳过 0 个 ==========