c++ - para - manejo de directorios en c
¿Incluir todos los archivos en un directorio? (4)
¿Cómo se puede lograr lo que el siguiente código está tratando de hacer?
#include "dir/*"
En bash
HEADER=all_headers.h
echo "#ifndef __ALL_HEADERS__" > $HEADER
echo "#define __ALL_HEADERS__" >> $HEADER
for file in dir/*.h
do
echo "#include <$file>" >> $HEADER
done
echo "#endif" >> $HEADER
Mira cómo Boost hace esto para, por ejemplo, utility.hpp
.
$ cat /usr/include/boost/utility.hpp
// Boost utility.hpp header file -------------------------------------------//
<snip>
#ifndef BOOST_UTILITY_HPP
#define BOOST_UTILITY_HPP
#include <boost/utility/addressof.hpp>
#include <boost/utility/base_from_member.hpp>
#include <boost/utility/enable_if.hpp>
#include <boost/checked_delete.hpp>
#include <boost/next_prior.hpp>
#include <boost/noncopyable.hpp>
#endif // BOOST_UTILITY_HPP
Ahora solo puede usar #include <boost/utility.hpp>
.
No puede, sin ejecutar una secuencia de comandos de antemano que genera todas las declaraciones #include.
El preprocesador solo puede manejar un archivo por instrucción #include, por lo que requiere un #incluir real para cada archivo que desee incluir en el preprocesamiento.
Una forma de lograrlo es escribir un encabezado conveniente que incluya todos los encabezados que desee. Tenga en cuenta que incluir encabezados que no utilizará puede aumentar innecesariamente el tiempo de compilación.