【问题标题】:Borland C++: Ambiguity with std (error E2015)Borland C++:与 std 的歧义(错误 E2015)
【发布时间】:2008-11-18 22:33:03
【问题描述】:

我一直在 Visual Studio 2005 中开发一个 DLL。目前它可以编译并完成它应该做的事情。

但是,我想使用 Borland C++ 2006 来编译它,因为我听说它更好并且可以生成更快的代码。当我尝试这样做时,我会收到如下错误消息:

E2015 strcmp(const char *,const char *) 和 std::strcmp(const char *,const char *)

我已将 strcmp 的每个实例更改为 std::strcmp 以解决歧义问题,并且它有效,但我想知道是否有更聪明的方法来做到这一点。

谢谢你:-)

【问题讨论】:

  • 我只是好奇你在哪里听说 Borland 更好?是对两人的真实评价吗?或者只是口口相传。我希望 MS 和 Borland 在这方面相当平等,但是......
  • 其实是“口碑”。但我从老师和我的其他学生朋友那里听说过。这就是为什么我认为 Borland C++ 可能是一个更好的选择。不幸的是,我可以编译源代码,但执行时出现问题。
  • 我不知道哪个更好。目前我更喜欢 Visual Studios 的环境。这对我来说更轻松。
  • 在中断了 8 年之后,Borland 不只是刚刚再次进入 C++ 编译器市场吗?如果是这样的话,我会怀疑他们“更好”的说法。但是,在多个编译器上测试您的代码总是好的。这样可以捕捉到很多细微的错误。

标签: c++ c++builder ambiguity


【解决方案1】:

你可能有

#include <cstring>

#include <string.h>

还有一个

using namespace std;

在您的代码中某处。 cstring 声明 std::strcmp,string.h 声明 strcmp。这导致了歧义。如果您可以避免做所有这 3 件事,那可能会解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-02
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    相关资源
    最近更新 更多