我在VS2012中有一个编译良好的解决方案。我想为它写一些单元测试,并找到了WinUnit。
为了方便起见,我将WinUnit测试项目引入了我的解决方案中。
我剥离了他们的样本文件,开始引用我想要测试的谷歌diff_match_patch副本。
一旦我将.h文件添加到我的项目中并进行编译,diff_match_patch文件中就会出现3个错误。在我添加新项目之前,这个文件编译得很好。
错误3错误C2059:语法错误:'('…\diff_match_patch.h 103 1 TestSampleLib
错误4错误C2143:语法错误:缺少";"在"}"之前。。。\diff_match_patch.h 104 1测试样本库
错误5错误C2238:";"前面的意外标记。。。\diff_match_patch.h 104 1测试样本库
所有错误都围绕着这个代码:
enum Operation {
DELETE, INSERT, EQUAL
};
我想这可能是我缺少的一些参考,但我已经添加了我能想到的所有内容,它仍然无法编译。
这些是我唯一的错误,所以我无法找出根本原因。
是什么导致这个原本可编译的文件失败?
似乎是宏名称污染。您可以尝试在枚举定义之前#undef所有名称,看看会发生什么。