包括目录中的所有文件?

Karl Glaser 22 c++ directory include c-preprocessor

如何实现以下代码尝试的功能?

#include "dir/*"

el.pescado.. 21

在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


Björn Pollex.. 11

实现这一目标的一种方法是编写一个包含所需标题的便捷标题.请记住,包含您不使用的标头可能会不必要地增加编译时间.


Jordan Lewis.. 8

如果不事先运行脚本,则不能生成所有#include语句.

预处理器每个#include语句只能处理一个文件,因此对于希望包含在预处理中的每个文件,它都需要一个实际的#include.


ezpz.. 7

看看Boost如何做到这一点,比如说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

现在你可以使用了#include <boost/utility.hpp>.