相关疑难解决方法(0)

宏作为预处理程序指令的参数

面对是否有可能#include在预处理器中选择s的问题,我立即认为不可能.
..后来发现它确实是可能的,你只需要注意参数扩展(例如Boost.Preprocessor可以处理).

虽然如果可能的话,我会避免实际为包含内容做这件事,但我想知道为什么这样做.目前,我无法在C++或C标准中获得有用的理解.
参数化宏是否允许任何预处理器指令?(除了#define/ #undef)
有人可以参考允许的地方并进行总结吗?

为简单起见,使用Boost.Preprocessor的好奇示例:

#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/stringize.hpp>

#define INC_LOCAL(a,b)  BOOST_PP_STRINGIZE(BOOST_PP_CAT(BOOST_PP_CAT(a,b),.h))
#define INC_GLOBAL(a,b) BOOST_PP_CAT(BOOST_PP_CAT(<,a),BOOST_PP_CAT(b,>))

#include INC_LOCAL(loc,al)   // #include "local.h"
#include INC_GLOBAL(vect,or) // #include <vector>
Run Code Online (Sandbox Code Playgroud)

更新:参考C标准,澄清问题.

c++ macros c-preprocessor

3
推荐指数
1
解决办法
1300
查看次数

标签 统计

c++ ×1

c-preprocessor ×1

macros ×1