2011-06-02 2 views
3

Que fait cette ligne? Je doute que ce soit un modèle ou une expression. (Faire ces divies et de nommer un membre HPP est une mauvaise idée)Que fait la macro #define() <...>?

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

fichier complet

# /* ************************************************************************** 
# *                   * 
# *  (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 

Répondre

6

Apparently it does some auto-incrementing magic.

est ici the documentation.

Je n'ai aucune idée de comment cela fonctionne. Ce que je sais, c'est que la magie est dans counter.hpp elle-même; que la définition que vous mis en ligne a entre parenthèses dans c'est juste pour que vous puissiez écrire l'utilisateur convivial vaguement:

#include BOOST_PP_UPDATE_COUNTER() 

pour invoquer la magie dit.

2

Il est juste un « raccourci » de sorte que vous pouvez faire

#include BOOST_PP_UPDATE_COUNTER() 

dans votre code plutôt que de connaître les détails de la façon dont cette fonctionnalité est mise en œuvre.

Voir cette question Incremented define Les réponses de certains exemples d'utilisation.