如何实现以下代码尝试的目的?
#include "dir/*"
答案 0 :(得分:22)
在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
答案 1 :(得分:11)
实现这一目标的一种方法是编写一个包含所需标题的便捷标题。请记住,包含您不使用的标头可能会不必要地增加编译时间。
答案 2 :(得分:8)
如果没有事先运行脚本生成所有#include语句,则不能。
预处理器每个#include语句只能处理一个文件,因此对于希望包含在预处理中的每个文件,它都需要一个实际的#include。
答案 3 :(得分:6)
查看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>
。