Вы можете использовать __COUNTER__
, хотя это не стандартно. MSVC ++ и GCC поддерживают его.
Если вы можете использовать boost, библиотека препроцессора имеет реализацию counter. Вот пример из документации:
#include <boost/preprocessor/slot/counter.hpp>
BOOST_PP_COUNTER // 0
#include BOOST_PP_UPDATE_COUNTER()
BOOST_PP_COUNTER // 1
#include BOOST_PP_UPDATE_COUNTER()
BOOST_PP_COUNTER // 2
#include BOOST_PP_UPDATE_COUNTER()
BOOST_PP_COUNTER // 3
(Кудо в гс)