Что на первом месте? защита заголовков, пространство имен и включает

Я делал такие файлы некоторое время: Имеет ли смысл порядок? или если пространство имен и #includes будут заменены и почему.

#ifndef CLASSNAME_H // header guards
#define CLASSNAME_H

#include "a.h" // includes in alphabetical order
#include "b.h" // user specified includes first
#include "c.h"
#include <vector> // then library includes

namespace MyNamespace
{
    class ClassName
    {

    };
}

#endif

Ответы

Ответ 1

Да. Это выглядит хорошо.

Хотя я заказываю свои заголовки по-разному (но в алфавитном порядке в порядке).

Единственное, что я могу изменить, это включить охранник. Я делаю include my namspace, а также имя класса. Поскольку несколько раз у меня есть классы с тем же именем (но в другом пространстве имен), которые используются одним и тем же кодом.

#ifndef MY_COMPANY_MY_NAME_SPACE_MYCLASSNAME_H // header guards
#define MY_COMPANY_MY_NAME_SPACE_MYCLASSNAME_H

#include "a.h" //   includes in order of most specific to most general.

               //   My includes first.
               //   Then C++ headers          <vector>
               //        I group all the containers together.
               //   Then C specific headers   <sys/bla.h>
               //   Then C generic headers    <ctype.h>


namespace MyNamespace
{
    Class ClassName
    {

    };
}

#endif

Ответ 2

То, что вы написали, идеально. Я не думаю, что вам нужно изменить порядок.