Я пытаюсь создать «глобальную переменную» в препроцессоре, которую можно увеличить.
Например, я определил abc
как 1
.Могу ли я переопределить его в 2 в следующий раз (я получаю ошибку переопределения при этом)?Нужно ли сначала использовать undef
?Но я получил ошибку компиляции при использовании undef
.
Как правильно сделать что-то подобное?
[100%] Building CXX object CMakeFiles/main.dir/main.cpp.o
error: use of undeclared identifier 'BOOST_PP_INC_abc'
std::cout << temp << endl;
note: instantiated from:
#define temp BOOST_PP_INC(abc)
note: instantiated from:
#define BOOST_PP_INC(x) BOOST_PP_INC_I(x)
note: instantiated from:
#define BOOST_PP_INC_I(x) BOOST_PP_INC_ ## x
<scratch space>:150:1: note: instantiated from: BOOST_PP_INC_abc
1 error generated.
make[2]: *** [CMakeFiles/main.dir/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/main.dir/all] Error 2
make: *** [all] Error 2
Вот код
#include <iostream>
#include <boost/preprocessor/slot/counter.hpp>
#include <boost/preprocessor/arithmetic/add.hpp>
using namespace std;
int main() {
std::cout << "Hello" << std::endl;
#define abc 1
#define temp BOOST_PP_INC(abc)
#undef abc
std::cout << temp << endl;
return 0;
}