MS VC++ 编译器模棱两可

MS VC++ Compiler equivocation

本文关键字:模棱两可 编译器 VC++ MS      更新时间:2023-10-16

在我的项目中,我尝试重新加载全局运算符new并删除([])。当我第一次尝试编译时,出现链接错误:

Main.obj : 错误 LNK2005: "void * __cdecl运算符 new(无符号整数)" (??2@YAPAXI@Z) 已在 LIBCMTD.lib(new.obj) 中定义

当我尝试第二次编译时,错误神奇地消失了!但有时会回来。如何解决这个问题?

运行时库:MTd。

法典:

void  operator delete(void * pointer){LALALA}

void  __cdecl operator delete(void * pointer){LALALA}

当我执行步骤时,此错误会返回:

  1. 删除重新加载的新(和其他)
  2. 编译
  3. 再次重新加载
  4. 尝试编译并得到此错误

在其他情况下,错误消失。这是什么原因?

你必须隐式声明"new"和"delete"作为静态成员函数

void* 运算符新(size_t大小);

无效

运算符删除(无效 *p);