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
убрать это?
Задача ещё не решена.
Других решений пока нет …