Что делает #define macro () <...>? - PullRequest
3 голосов
/ 02 июня 2011

Что делает эта строка?Я сомневаюсь, что это шаблон или выражение.(делать это и называть члена hpp - плохая идея)

# define BOOST_PP_UPDATE_COUNTER() <boost/preprocessor/slot/detail/counter.hpp>

Полный файл

# /* **************************************************************************
#  *                                                                          *
#  *     (C) Copyright Paul Mensonides 2005.                                  *
#  *     Distributed under the Boost Software License, Version 1.0. (See      *
#  *     accompanying file LICENSE_1_0.txt or copy at                         *
#  *     http://www.boost.org/LICENSE_1_0.txt)                                *
#  *                                                                          *
#  ************************************************************************** */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_SLOT_COUNTER_HPP
# define BOOST_PREPROCESSOR_SLOT_COUNTER_HPP
#
# include <boost/preprocessor/slot/detail/def.hpp>
#
# /* BOOST_PP_COUNTER */
#
# define BOOST_PP_COUNTER 0
#
# /* BOOST_PP_UPDATE_COUNTER */
#
# define BOOST_PP_UPDATE_COUNTER() <boost/preprocessor/slot/detail/counter.hpp>
#
# endif

Ответы [ 2 ]

6 голосов
/ 02 июня 2011

По-видимому, он делает магию с автоинкрементом.

Вот документация .

Понятия не имею, как это работает. Что я знаю, так это то, что магия находится в самом counter.hpp; что опубликованное вами определение содержит квадратные скобки, чтобы вы могли написать смутно удобный текст:

#include BOOST_PP_UPDATE_COUNTER()

чтобы вызвать магию.

2 голосов
/ 02 июня 2011

Это просто «ярлык», поэтому вы можете сделать

#include BOOST_PP_UPDATE_COUNTER()

в своем коде, а не знать подробности реализации этой функции.

См. Этот вопрос Повышеноопределить ответы для некоторого примера использования.

...