将注释传递给BOOST_PP_STRINGIZE宏

时间:2017-09-27 07:17:42

标签: c++ c-preprocessor vivado-hls

boost/mpl/list.hpp包含以下代码:

#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING)
#   define AUX778076_LIST_HEADER \
    BOOST_PP_CAT(list,BOOST_MPL_LIMIT_LIST_SIZE).hpp \
    /**/
#else
#   define AUX778076_LIST_HEADER \
    BOOST_PP_CAT(list,BOOST_MPL_LIMIT_LIST_SIZE)##.hpp \
    /**/
#endif

#   include BOOST_PP_STRINGIZE(boost/mpl/list/AUX778076_LIST_HEADER)
#   undef AUX778076_LIST_HEADER
#endif

当我尝试使用Vivado HLS C ++编译器进行编译时,出现错误:

/usr/include/boost/mpl/list.hpp:36:13: fatal error: 'boost/mpl/list/list20.hpp /**/' file not found
#   include BOOST_PP_STRINGIZE(boost/mpl/list/AUX778076_LIST_HEADER)

我得出结论,预处理器将空注释/**/附加到包含的文件名中。删除它(使用前面一行的反斜杠\)可以解决问题,尽管还有许多其他类似的空注释会导致新的错误。

为什么AUX778076_LIST_HEADER宏的空注释开头?期望BOOST_PP_STRINGIZE删除它是否正确?

0 个答案:

没有答案