C++ 为什么使用C+的命名标准+;功能不存在?

C++ 为什么使用C+的命名标准+;功能不存在?,c++,visual-studio,visual-c++,C++,Visual Studio,Visual C++,我为AutoCAD编写插件。如果我编写托管(即.net)插件,那么我可以使用任何Visual Studio版本,该版本可以与AutoCAD使用的.net Framework版本配合使用(非常方便): AutoCAD 2009可以使用.NET 3.0、3.5 AutoCAD 2010可以使用.NET 3.5 AutoCAD 2016可以使用.NET 4.5、4.5.1 因此,通过Visual Studio 2013,我可以为AutoCAD 2009-2016编写.net插件 但有时我需要为A

我为AutoCAD编写插件。如果我编写托管(即.net)插件,那么我可以使用任何Visual Studio版本,该版本可以与AutoCAD使用的.net Framework版本配合使用(非常方便):

  • AutoCAD 2009可以使用.NET 3.0、3.5
  • AutoCAD 2010可以使用.NET 3.5
  • AutoCAD 2016可以使用.NET 4.5、4.5.1
因此,通过Visual Studio 2013,我可以为AutoCAD 2009-2016编写.net插件

但有时我需要为AutoCAD编写非托管插件,因为它的托管.net API没有完全覆盖非托管API(ObjectARX SDK)。ObjectARX是C++的API。在这种情况下,我不能对每个AutoCAD版本使用相同的Visual Studio。例如,我将使用VS2005编写AutoCAD 2009插件。因此,我在虚拟机上安装了VS2005-2013。在我看来,这是非常不可信的

我知道,这个问题是因为C++函数命名标准不存在,每个版本的VS都有自己的名字生成规则,这些函数没有被代码>外部的“C”< /代码>标记。p> 但为什么这个标准还不存在呢?原因是什么?我相信这个理由是存在的。这种行为是不令人信服的,不仅仅是对我来说(我问过其他程序员)。但是他们不知道为什么每个新版本都有自己的C++函数命名规则,为什么C++函数的命名标准不存在。


谢谢。

确实存在标准,请参阅

但并不是所有的编译器都使用它,因为它们有自己多年来一直使用的破坏约定,并且出于各种原因不想更改它们


在你的例子中,VisualStudio不同版本之间的差异不仅仅是名称的篡改,C++运行库和标准库也有变化。

很可能是因为它链接到运行库的不同版本。您可以提前失败(程序不会启动),而不是延迟失败(程序可能会在过程中损坏数据)。