Kar*_*ser 22 c++ directory include c-preprocessor
如何实现以下代码尝试的功能?
#include "dir/*"
Run Code Online (Sandbox Code Playgroud)
el.*_*ado 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
Run Code Online (Sandbox Code Playgroud)
如果不事先运行脚本,则不能生成所有#include语句.
预处理器每个#include语句只能处理一个文件,因此对于希望包含在预处理中的每个文件,它都需要一个实际的#include.
看看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
Run Code Online (Sandbox Code Playgroud)
现在你可以使用了#include <boost/utility.hpp>.
| 归档时间: |
|
| 查看次数: |
41169 次 |
| 最近记录: |