вторник, 23 марта 2010 г.

Effective C++ compiler

Кстати, пока смотрел флаги GNU C++ в предыдущем сообщении, наткнулся на флаг -Weffc++. Он говорит компилятору сообщать о нарушениях правил Скота Мейерса(Scott Meyers) из книг Effective C++ и More Effective C++. Контролируются следующие правила из первой книги:

11. Для классов с динамическим выделением памяти объявляйте копирующий конструктор и оператор присваивания.
12. Предпочитайте инициализацию присваиванию в конструкторах.
14. Делайте деструкторы виртуальными в базовых классах.
15. "operator=" должен возвращать ссылку на *this.
23. Не пытайтесь вернуть ссылку, когда вы должны вернуть объект.

И следующие из второй:

6. Различайте префиксную и постфиксную формы операторов инкремента и декремента.
7. Никогда не перегружайте опреаторы "&&", "||", и ",".

Хочу такую фичу в Visual Studio.

2 комментария:

  1. Опция конечно хорошая...
    Только многие библиотеки не следуют этим соглашениям. Особенно темплейтные (например boost).

    И в существующем проекте включать - будет море ругани. :)

    ОтветитьУдалить
  2. На этот счет там есть комментарий: " When selecting this option, be aware that the standard library headers do not obey all of these guidelines; use grep -v to filter out those warnings."

    ОтветитьУдалить