重复生成宏

Repeat generation of macro

本文关键字:复生      更新时间:2023-10-16

我想生成以下预处理器杂注

#pragma blabla column("0030")
#pragma blabla column("0130")
#pragma blabla column("0230")
...
#pragma blabla column("2330")

小时从0变为23

BOOST_PP_LOCAL_LIMITS/ITERATE可能吗?

是的。

#include <boost/preprocessor/repeat.hpp>
#include <boost/preprocessor/stringize.hpp>
#include <boost/preprocessor/control/if.hpp>
#include <boost/preprocessor/comparison/greater.hpp>
#define blabla(z, n, data)                          
_Pragma(BOOST_PP_STRINGIZE(                     
blabla column(                              
BOOST_PP_STRINGIZE(                     
BOOST_PP_CAT(                       
BOOST_PP_CAT(                   
BOOST_PP_IF(                
BOOST_PP_GREATER(n, 9), 
,                       
0                       
),                          
n                           
),                              
30                              
)                                   
)                                       
)                                           
))
BOOST_PP_REPEAT(24, blabla, ~)

_Pragma将我们保存在那里,因为没有办法生成像#pragma这样的预处理器指令,但它对接受的内容非常挑剔。特别是,它不进行字符串连接,因此_Pragma("some" "thing")不起作用,我们必须连接令牌land中的所有内容,然后字符串化作为最后一步。

相关文章:
  • 没有找到相关文章