Category Archive for C++

C++11 Standard Published by ISO

The ISO International Organization for Standardization has now officialy published the C++11 standard :)
Here is part of the press release:

C++, one of the most popular programming languages used in everything from Web browsers to 3D video games, has been fully updated and published as, ISO/IEC 14882:2011, Information technology – Programming languages – C++.

ISO/IEC 14882:2011 defines the programming language and specifies requirements for implementation. Also known as C++11, this is the first major revision of the standard since 1998. Its new features extend C++’s traditional strengths of flexibility and efficiency – for example, lambda functions, move semantics, and variadic templates further enable developers to use powerful expressiveness and strong abstraction to write efficient, high-performance code with full access to the hardware available when needed. Even more, the new C++11 has the convenience and ease of use of other modern languages – from features like auto type deduction and explicit virtual override control, to standard smart pointers that mean never writing delete again.

You can read the complete press release here.

Share

“Professional C++, Second Edition” Featured on the Microsoft VC++ Team Blog

My book “Professional C++, Second Edition”, published by Wiley/Wrox, is now featured in a dedicated post on the Microsoft Visual C++ Team Blog :)
Read the VC++ Team Blog post here.

Share

Windows 8 Developer Preview

By now, virtually everyone on this planet heart about the Windows 8 Developer Preview that was launched a couple of days ago on the Microsoft BUILD conference.
Everyone can download this developer preview. This will give you the opportunity to play and experiment with the new Metro layout for Windows.

The developer preview also includes a preview of Microsoft Visual Studio 11 express edition, which makes it very easy to make Metro style applications in C++, C#, VB.Net, or JavaScript.

Any serious developer should download this preview and learn as much as possible about the new Windows platform.

Go to the BUILD website to download the preview and to download interesting video recordings of the sessions on the BUILD conference.

Share

Work On My Book “Professional C++, Second Edition” Is Finished

I just finished everything for my book “Professional C++, Second Edition” by Wiley/Wrox :)
I think it will go on sale maybe around October, I don’t know the exact date yet.
After a bit more than a year of work, it’s finished :D
It was really a huge amount of work, but it was definitely worth it, and a very interesting experience.

Here is the official link.

Share

C++11 Now the Confirmed Name

Yesterday, I wrote a post about the fact that C++0x was unanimously approved.
Today, we got confirmation from Geneva that they will officially publish the new C++ standard in a matter of weeks with the name “ISO/IEC 14882:2011(E) Programming Languages — C++, Third Edition“, which means we can start calling it C++11

See also Herb Sutter’s update on his blog.

Now I can finalize the last pieces for my “Professional C++, Second Edition” book (Wiley/Wrox).

This is a great day for the C++ world! :)

Share

C++0x Unanimously Approved

The new C++ standard has been unanimously approved and is now an international standard.
It can still take a few months before it’s officially published, so the question still remains whether it will be called C++11 or C++12. I for sure hope it will be C++11 :)
Here is Herb Sutter’s blog post about it.

Share

Microsoft MVP VC++ 2011 Award

I got the confirmation email from Microsoft that my MVP (Most Valuable Professional) award for Visual C++ is extended for 2011 :)

See my MVP profile.

Share

Visual Studio 2010 Service Pack 1

Microsoft has released Visual Studio 2010 Service Pack 1.
MSDN subscribers can download it right now.
It will be publicly available on 10th of March.
See Soma Segar’s blog for details on what is included/changed with SP1.

Share

Introduction to the Standard Template Library

Stephan T. Lavavej (aka STL :) ) from Microsoft has created a series of Channel 9 video presentations discussing several aspects of the STL. They serve as a very good introduction to using the Standard Template Library.

I found them very interesting :)

Share

Introducing the Windows Kernel Transaction Manager, Transactional NTFS and Transactional Registry

Windows Vista and later versions of Windows have a so called Kernel Transaction Manager (KTM). This makes it easy for application to use transactions. There are two big components built on top of the KTM: Transactional NTFS (TxF) and Transactional Registry (TxR). With TxF you can combine several file system operations into a transaction and either commit or rollback the transaction as a whole. TxR allows you to do the same thing with registry manipulations. File system transactions and registry transactions can be grouped into a single transaction. That way we can ensure that all file system modifications and all registry modifications are fully executed or none at all.

I wrote an article that gives a very brief overview of TxF and TxR to give you an idea of what you can accomplish with it. Creating your own transaction manager other than TxF or TxR is also possible but requires you to create a Win32 transaction aware service (= resource manager) which is outside the scope of this introductory article. You can read the full article on codeguru.com.

Share

Exceptions in C++

On the VC++ MVP mailing list an interesting discussion took place on using exceptions in C++. Now, Diego Dagum, the VC++ Community PM, has written an interesting blog post summarizing that discussion. It’s definitely an interesting read if you work with C++.
Read it here.

Share

The New MFC Animation API

Introduction

Microsoft Visual Studio 2010 Service Pack 1 includes a number of enhancements and new features for MFC developers. One of those changes is an animation API to make it easy for you to create animations in MFC applications. This article will briefly introduce this animation API.
This articles was also posted on Codeguru.com.
Read the rest of this entry »

Share

Visual Studio 2010 SP 1 Beta

Microsoft has released Visual Studio 2010 SP1 Beta. It’s available right now for MSDN subscribers and will be available to everyone on Thursday.

It includes a new help viewer that I mentioned in my previous blog entry and “Win7-specific MFC APIs to support use of Direct2D, DirectWrite, and Windows Animation Technologies”. I can’t wait to try those out :)

Get more details here.

Share

Visual Studio 2010 Feature Pack 2 Released

Microsoft released Visual Studio 2010 Feature Pack 2 to MSDN subscribers which extends testing, code visualization and modeling capabilities in VS2010. Its main features are more advanced platform and tool support for both manual and automated testing scenarios. It allows you to better control your Silverlight 4 testing scenarios and UI testing code.

Feature Pack 2 includes the following C++ related additions:

Feature Pack 2 is cumulative and includes Feature Pack 1.

Get more information here.

Share

Native C++ Development is Still Being Used

I just stumbled upon an article mentioning that Evernote abandoned WPF and the Microsoft .NET framework and rewrote their application from scratch in native C++ code :) The official reason given:

The blurry fonts, slow startup times, large memory footprint, and poor support for certain graphics cards were all issues that the technology behind 3.5 was incapable of resolving. As a result, we ended up chasing down platform bugs rather than adding the great features our users wanted.

Read the article here.

Share

Analyze Your C++ Code Using CppDepend

CppDepend is a tool that you can use to analyze your C/C++ code. I gave it a try and it’s pretty powerful. CppDepends has support for 60 different code metrics. It has something called Code Query Language (CQL) that allows you to perform queries on your code like the following:

  • Which public methods have more than 30 lines of code?
    SELECT METHODS WHERE NbLinesOfCode > 30 AND IsPublic
  • Which classes derive From CBase?
    SELECT TYPES WHERE IsClass AND DeriveFrom “CBase”
  • Which methods have been refactored recently ?
    SELECT METHODS WHERE CodeWasChanged

It can generate several different kind of graphical representations of your code, for example:

I think this tool will help a lot when working on a new code base to understand the structure of the code.

Here is a description from the vendor:

Improve your code base quality.
CppDepend is a tool that simplifies managing a complex C/C++ (Native,Mixed and COM) code base. Architects and developers can analyze code structure, specify design rules, do effective code reviews and master evolution by comparing different versions of the code.

Refactor and Improve your design and architecture.
CppDepend provides useful graphs to analyze your design and architecture. CQL language gives you a flexibility to create your custom queries and have a deep view of your code base.

Assist your migration.
Understanding the existing code base is primordial before any migration. CppDepend helps you in your migration process.

Visit the CppDepend site.

Share

Defining x64 Target Platform for VC++ Projects

Marius Bancila posted an excellent post on his blog explaining how to define x64 target for you Visual C++ Projects.

If you want to port an existing 32-bit application for the x64 platform (especially since 32-bit processors will soon be history), or if you want to target x64 for a new application, the first step in building for x64 is setting up your solution. In this post I will explain what are the steps in configuring x64 as target platform for your projects. Of course you must have the 64-bit compiler and tools installed to make this possible.

Read the full article.

Share

Querying Bing Using the New Windows 7 Web Services C++ API (WWSAPI)

According to MSDN, WWSAPI is a native-code implementation of SOAP which provides core network communication functionality by supporting a set of the WS-* and .NET-* family of protocols. WWSAPI is designed to be used by components/applications which fall into one of the following categories:

  • Native code mandate
  • Require minimal dependencies
  • Require minimal startup time
  • Memory constrained environments

Using this brand new API, it is possible to make native-code SOAP based web services and clients for SOAP based web services. I wrote an article that explains how to build client applications that use SOAP based web services. The web service that I used in the examples is the Microsoft Bing SOAP API which allows you to search for text, images and so on. The article just went live on CodeGuru. Read the full article.

Share

The C++0x Range-Based For Loop

C++0x adds a new looping structure: the Range-Based for loop. This makes it easier to loop over elements of lists. It works with standard C arrays and types that have begin() and end() functions returning iterators like almost all STL containers.

Below is an example of a range-based for loop looping over a standard C-style array, incrementing each value by 1.

int myArray[3] = {1, 2, 3};
for(auto& el : myArray) {
    ++el;
}

Note that this example also uses the auto type deduction introduced in C++0x.
Now it’s only waiting until the C++ compilers start supporting it :)

Share

Technical Editor for “Ivor Horton’s Beginning Visual C++ 2010″

I was technical editor for the book “Ivor Horton’s Beginning Visual C++ 2010“, published by Wiley. According to the author:

I would particularly like to thank my technical editor, Marc Gregoire, for doing such an outstanding job of reviewing the text and checking out all the code fragments and examples in the book. His many constructive comments and suggestions for better ways of presenting the material has undoubtedly made the book a much better tutorial.

Below is a description of what you can expect from the book.

By following author Ivor Horton’s accessible tutorial approach and detailed examples you can quickly become an effective C++ programmer. Thoroughly updated for the 2010 release, this book introduces you to the latest development environment and teached you how to build real-world applications using Visual C++. With this book by your side, you are well on your way to writing applications in both versions of C++ and becoming a successful C++ programmer.

Ivor Horton’s Beginning Visual C++ 2010:

  • Teaches the essentials of C++ programming using both of the C++ language technologies supported by Visual C++ 2010.
  • Shares techniques for finding errors in C++ programs and explains general debugging principles.
  • Discusses the structure and essential elements that are present in every Windows application.
  • Demonstrates how to develop native Windows applications using the Microsoft Foundation Classes.
  • Guides you through designing and creating substantial Windows applications in both C++ and C++/CLI.
  • Features numerous working examples and exercises that help build programming skills.
Share