He estado haciendo archivos como este por un tiempo: ¿Tiene sentido el orden? o deberían intercambiarse el espacio de nombres y los #includes y por qué.¿Qué viene primero? guardias de encabezado, espacio de nombres e incluye
#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
Imagínese que '# include' literalmente pega los contenidos del archivo en su archivo base, y luego resuelva en qué espacio de nombres desea tener qué declaraciones. –
... y también considere lo que sucedería si diferentes archivos .cpp incluyen los mismos encabezados dentro de espacios de nombres diferentes ... –