0

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删除它是否正确?

4

0 回答 0