Thursday, August 17, 2006

g++ compiler option -Weffc++

I found it quite interesting to know that g++ compiler actually provides an option (-Weffc++) which enables warnings for constructs that violate guidelines in Effective C++!!

From g++ manual (man g++)== Begin ==Warn about violations of the following style guidelines from Scott Meyers’ Effective C++ book:

* Item 11: Define a copy constructor and an assignment operator for classes with dynamically allocated memory.* Item 12: Prefer initialization to assignment in constructors.* Item 14: Make destructors virtual in base classes.* Item 15: Have "operator=" return a reference to *this.* Item 23: Don’t try to return a reference when you must return an object.

Also warn about violations of the following style guidelines from Scott Meyers’ More Effective C++ book:

When selecting this option, be aware that the standard library headers do not obey all of these guidelines.

== End ==

Indeed, Effective C++ is a very nice work by Scott Meyer. He has compiled two lists of top C++ publications: top 5 books and top 5 articles. His list captures right set of very well written, excellent publications in C++ as I have read most of the literature in those lists. I would also like to add More C++ Gems to that list.

3 comments:

it's a nice flag but it outputs way too many warnings: if you have a string as a member of a class and you don't care to call its constructor (because you know that the default constructor will be called), you'll get an useless warning;

it should have a switch to disable warnings for objects (or at least for the STL classes like strings).