我主要是一名C#开发人员,Visual Studio中Visual C ++的存在使我感到困惑。
我有以下问题:
有没有办法开发将在Visual C ++中运行的托管代码,或者在Visual C ++运行中开发的任何代码都需要.NET运行?托管与非托管是否归结为使用的编译器?
如果正在运行编写和运行托管的Visual C ++代码,我在VC ++中可以做些什么我不能用C#做什么?
除了学习本身之外(这很棒)我会通过学习VC ++获得任何见解,如果是,我应该从哪里开始?
我知道这不是一个直接的编程问题,而且我已经准备好迎接这些问题,但是,我对这一点非常好奇,并认为其他人可能也是如此。
答案 0 :(得分:1)
我回忆起Stephan T. Lavavej的一点见解,MS工具链中的几乎所有东西都依赖于MSVC上的某种方式。它非常重要,尽管并不总是直接的。
它是否有C和C ++,并且每个都有不同的编译器吗?
它只能用C ++编写,但大多数C都可以用C ++编译器编译。
有没有办法开发将在Visual C ++中运行的托管代码,或者在Visual C ++运行中开发的任何代码都需要.NET运行?托管与非托管是否归结为使用的编译器?
不,您不需要.NET或C ++ / CLI。很多人没有。
如果正在运行编写和运行托管的Visual C ++代码,那么我在VC ++中可以做些什么我不能在C#中做什么?
可能是低级别的东西并使用C或C ++库。
除了学习本身(这很棒)之外,我会通过学习VC ++获得任何见解吗?如果是,我应该从哪里开始?
您将了解C ++提供的所有见解。你不需要MSVC,只需要任何编译器。
Learn C++ first.然后阅读Dan-o指出的MSDN documentation。
答案 1 :(得分:1)
它是否是[Visual C ++]做C和C ++,并且每个都有不同的编译器吗?
有一个编译器(或至少一个前端程序)同时执行C和C ++(但与某些人认为的相反,它在C的单独模式下运行,它将拒绝特定于C ++的构造)。
有没有办法开发将在Visual C ++中运行的托管代码,或者在Visual C ++运行中开发的任何代码都需要.NET运行?托管与非托管是否归结为使用的编译器?
是的,用C或C ++开发的本机代码可以/不运行.NET。有一种混合(C ++ / CLI)有点像C ++,但它产生的东西需要.NET运行。我不会花费很多时间/精力担心它 - 事实上,我通常完全无视它的存在。
如果正在运行编写和运行托管的Visual C ++代码,我在VC ++中可以做些什么我不能在C#中做什么?
是和否。 C ++ / CLI使得与本机代码的互操作比尝试直接从C#使用它更简单 - 这基本上是我建议使用它的唯一情况(至少我最后一次看,这几乎是MS推荐的内容。)
除了学习本身(这很棒)之外,我会通过学习VC ++获得任何见解吗?如果是,我应该从哪里开始?
你的意思是学习真正的C ++,还是微软的C ++ / CLI?如上所述,C ++ / CLI既不是鱼也不是鸡,我通常会避免使用它。
Real C ++是一个不同的故事。使用它的原因有很多:
就我个人而言,我认为你过于专注于“一个编译器”而不是“两个编译器” - 这是一个几乎没有意义的区别。真正的问题不是涉及多少编译器,或者哪个编译器产生了什么代码,而是如何实现你想要的 - 至少如果你在VS内部工作,它通常会解决类似编译器的问题。调用特定的源代码。
让我们将其视为销售宣传(或类似的东西)我觉得有必要指出,与C#相比,C ++并非所有奇迹和光明。例如,C ++并不真正支持反射,这使得某些事情很多比C#更笨拙。一些其他领域(例如,模板元编程)是可能的,但是可能难以理解并且通常涉及真正可怕的语法。然后有一个简单的事实,C ++的编译时间几乎总是比C#慢一点。