Visual C++ in 2013 and Beyond – Q&A

Visual C++ in 2013 and Beyond – Q&A

  • Comments 17

Did you watch Charles Torre's discussion with Ale Contenti, Tarek Madkour and Herb Sutter at the Visual Studio 2013 Virtual Launch last month? The team answered a number of questions from Charles and the community on topics ranging from refactoring to PEX. In case you missed the video (or missed some of the answers), the questions and answers are provided below.

Note that the questions and answers were often tweaked for clarity, correctness and completeness. This is not a transcript. If you have follow up questions, lob them our way in the comments section.

Thanks!

How easy is it to migrate C++ assets to Visual Studio 2013?

We care about C++ standards and library support, making it easier to bring your C++ code into Visual Studio 2013. The IDE also helps with an option to create a project file from existing code.

If you are already able to create a .pdb file, an available PDBProject plug-in can create a Visual Studio 2013 project for you. It takes information contained in the .pdb to create a C++ project. For more information, see Creating a C++ Project from a PDB file: PDB Project.

Will there be a modern UI framework for the Windows Desktop?

This is an important topic and is actively being discussed among different teams at Microsoft. We don't have more to share at this moment apart from the fact that we deeply care about enabling great desktop application development. Our current desktop UI framework for C++, MFC, will continue to be supported and MFC will be in the next release of Visual Studio, but we have no plans to majorly revamp it.

What about refactoring?

No C++ refactoring in the VS2013 RTM release. We do recognize the need for a good solution that makes developers more productive and works on real projects. So we're starting to actively prototype some solution to have a discussion with our customers about the level of accuracy, scalability, etc. A prototype add-in tool for Visual Studio 2013, the Visual C++ Refactoring extension, is available now in the extension gallery, .

Any updates on SG13?

SG13 is the special working group developing a C++ 2D graphics API proposal. It just got started and there is a small meeting next week to discuss options and scope.

Expect more updates next year. View the discussion here.

Is C++11 available for Windows CE?

The latest version of Windows CE shipped with complete support in Visual Studio 2012 (IDE, compilers, debugger, libs). It is more conformant, supporting lambdas, ranged-base for loops, scoped enumerations and more. For more information, check out Visual C++ in Visual Studio 2012.

Any additions for C++ unit testing?

No.

How can I use C++11 with older code bases?

One approach is to modify existing code to use C++11 features like shared_ptr or range-based for loops. Another approach is to use C++11 only in new code, avoiding the risk of breaking existing code.

Your old code will still work and will likely both compile and run faster with the latest version of Visual Studio. This is a goal we have for each release.

Is MASM included?

Yes.

Are there improvements to C++ AMP shared memory?

In Visual Studio 2013, we added support for "zero copy" scenarios. C++ AMP also got better debugger and profiler support so that you can examine operations being performed on the GPU. We added a bunch of features to enhance support for textures and side-by-side CPU/GPU debugging (mixed-mode debugging is available on Windows 8.1 for the WARP accelerator).

For more information, see What's New for C++ AMP in Visual Studio 2013.

Is AMP cross platform?

Yes. For more information, see C++ AMP to target Khronos SPIR and HSAIL on the Parallel Programming in Native Code blog. While there, check out the many other articles on C++ AMP.

Can I target Windows XP?

Yes.

Are you considering other back ends like LLVM or Clang?

No plans at this time.

Will you support PeX and Moles? What about Pexforfun?

PeX and Moles provide isolation and White box unit testing for .NET. With Pexforfun, you can write, compile and run code and analyze the behavior of code interactively.

Visual Studio 2013 has strong static analysis (using /analyze) for native code.

When will you improve the project properties dialog?

It is resizable in Visual Studio 2013, but it definitely needs more improvement.

NuGet for C++?

Done! Read all about it here.

Will there be generic lambdas in the next CTP?

Keep an eye on VCBlog for an update by the end of the year.

This is the most requested feature in the C++14 standard and it is on the roadmap presented by Herb Sutter in his One C++ keynote at Going Native 2013 earlier this year.

Does Visual C++ use ASTs?

The VC++ compiler uses different technology internally. As we develop more C++11 features (e.g. constexpr), we've been significantly revamping the internal compiler technologies that we use, including adding ASTs. These ASTs are not exposed for 3rd party use at this time.

  • Please keep in mind that developers out in the real world don't often get the luxury of only developing code for the latest operating systems and technology yet still want to use the latest tools. For instance our MFC based UI can't be rewritten if you decide to drop it in the future. We also suffered greatly when VS2012 dropped XP/2003 support and even with the Update 1 we still have to jump through hoops to get our binaries compatible (not marking exe/dll with proper OS version and subsystem version automatically). I'm stuck supporting 2003 for sometime. I would like to support it with the latest visual studio without jumping through any hoops big or small.

  • @John, thanks for sharing your scenarios. We have heard this from a wide variety of developers who manage large existing applications.

  • "Look for a prototype add-in tool for Visual Studio 2013 in the next few weeks (just for rename refactoring, with some limitation)."

    Like the one that whose release was already mentioned on this very blog?  blogs.msdn.com/.../visual-studio-rename-refactor-helper-for-visual-studio-2013.aspx

  • @Tristan Thanks for catching that. I updated the article to point to the extension which came out after the Q&A :)

  • I nearly wet my pants when I read the "Will there be a modern UI framework for the Windows Desktop?" question and answer.  We are definitely caught between a rock and a hard place with MFC and WPF.  Bringing the tools that Metro developers have (XAML/C++/Direct2D/native code) to desktop developers would be amazing for those of us who haven't thrown in the towel on the desktop.  Please don't leave out immediate mode graphics like WPF did.  I'm looking forward to whatever may come of this.

  • I agree with the comment above. If you want to see a real resurgence in native apps give us a modern UI framework similar to WPF/XAML.

  • Yes, the answer to the modern desktop UI question is encouraging. Please please let the solution apply to Windows 7 as well - that's Desktop and it ain't going away any time soon.

  • Q: Will MFC be added to or will it tolerate new VS/OS versions?

  • @Ted

    We have been updating MFC along with Visual Studio. As for MFC compatibility in new OS versions, there is usually a separate team that checks compat.

    Hope this helps and thanks for the question!

  • "We're going to support [MFC], obviously. We're not going to say 'no more MFC for you, in the next release you won't have it'." (I may have misheard something in here, but I think that was the general gist).

    Since there was no explicit mention of Unicode vs MBCS, is this a backing off from the last statement of "no more MBCS support for you, convert your 350+ projects to use Unicode, making sure to audit every single line of code and while you're doing this please don't give up and change to use C#"? Or is that "research" that MBCS isn't used still considered as solid as the "research" that XP isn't used was?

  • Native XAML C++ UI framework is fantasy

  • Talking about MFC, there is a long standing bug in CMFCRibbonSlider: if the ribbon is minimized, the slider simply does not work. Since the slider that appears in the ribbon when you extend it is a copy of the original, it seems like you forgot to copy the position value to the original and as a result, no matter how much you wiggle the lever, it simply doesn't work. None of the hacks proposed in the internet (not many by the way) work for me either. I hoped VS 2013 would fix this but it didn't.

    Another thing, VS 2012 (for color scheme purposes) does not consider text after "//" to be comments, since it displays it with the same color as "Plain Text", you can only change the color of one-line comments by changing the color of "Plain Text" in Tools->Options->Environment->Fonts and Colors. That's so blatant a bug I don't know why nobody has reported it yet... or maybe I am looking in the wrong place?

  • > Native XAML C++ UI framework is fantasy

    Yes, I know you're probably right.  :-(

    Heck, I'm a fan of C# as a language. But looking back, I often feel that too many sacrifices were made in order to make managed code "more productive". I would love to see the power and performance of C++ married to a modern UI framework such as WPF/XAML. Ideally, MS would develop a native XAML renderer that can co-exist peacefully with MFC so its (vast) user base can move their applications forward without porting them to .NET, allowing us to retain the performance and tight resource management that we value.

    Technically, it's entirely feasible - but I admit that's it's incredibly unlikely to happen.

  • When are we going to get a 64-bit version of visual studio ?

  • Hi,

    The Microsoft efforts (C++ Renaissance, and Going Native)is very commendable.

    As a senior C# developer, who have worked with a lot of different languages, but C++, I felt moved and started developing modern C++ programs. As my clients are multinational corporations, none of them have Windows 8 installed in significant number yet. So all my development targets Windows 7 64 - so no tablets, just desktops (MFC).

    It was all going very well: the exe file is very small, it performs very well, and the development is relatively simple, mainly thanks to STL.

    Unfortunately, the big hurdle I am facing now is how to access SQL Server 2012 and execute a very basic and simple operation:

    1) Connect to a database.

    2) Execute an Stored Procedure with parameters.

    3) Get the result set back.

    I have been browsing the Internet for several days and could not find a simple sample on how to do this mundane and extremely common task.

    I concluded that the currently recommended technology is SQL Native Client using ODBC. But that is it. I browsed all the blogs, online documentation, MSDN sites, community sites, SQL sites, etc. that I could locate, to no avail so far. And I am used to find what I am looking for in one or, sometimes, two searches!

    How does Microsoft expects us C# developers turn into modern C++ developers when the most basic data access sample is not readily available, even to Microsoft own SQL Server!

    We, developers, learn quite quickly from well commented sample code. In the MSDN SQL sites there are documentation for all methods in the ODBC driver, but very few and incomplete samples. Nothing as simple as I am looking for. This is the base for learning: samples.

    Thanks in advance for any suggestion.

    Eduardo Quintana

    eduardoquintana@hotmail.com

Page 1 of 2 (17 items) 12