5

我已经在两台不同的机器上编译了我的代码,我认为它们具有相同的设置。但是,一个编译没有问题,另一个给出以下错误。

LogEventReader.cpp(320) : error C3861: 'for_each': identifier not found, even with argument-dependent lookup

相关代码:

#include <algorithm> 
...
for_each(messages.begin(), messages.end(), processXMLMessage);

任何想法可能是什么问题?TIA。

4

2 回答 2

13

试试吧std::for_each()。也许它看不到命名空间。

于 2009-08-06T15:32:43.047 回答
12

一个可能的问题是,第一个编译器using namespace std;在允许使用来自该命名空间的未修饰标识符(例如for_each)之前需要一个,而第二个编译器过于宽松并且不需要它。

当然,正如其他答案和评论强烈指出的那样,有可能是首选的替代方案,例如std::for_each在每次出现时明确拼写,或者使用using声明( using std::for_each;) 而不是更广泛的using指令​​( using namespace std;)——但这(好)建议不是对您为什么一个编译器会诊断错误而另一个编译器没有的问题的回应;-)。

于 2009-08-06T15:31:53.873 回答