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