Есть ли директива препроцессора, которая проверяет, не определена ли константа. Я знаю директиву #ifndef
, но я также ищу директиву #elif not defined
. Есть #elif not defined
Есть ли?Директива препроцессора: #elif не определен?
Это, как я хотел бы использовать его:
#define REGISTER_CUSTOM_CALLBACK_FUNCTION(callbackFunctName) \
#ifndef CUSTOM_CALLBACK_1 \
#define CUSTOM_CALLBACK_1 \
FORWARD_DECLARE_CALLBACK_FUNCTION(callbackFunctName) \
#elif not defined CUSTOM_CALLBACK_2 \
#define CUSTOM_CALLBACK_2 \
FORWARD_DECLARE_CALLBACK_FUNCTION(callbackFunctName) \
#elif not not defined CUSTOM_CALLBACK_3 \
#define CUSTOM_CALLBACK_3 \
FORWARD_DECLARE_CALLBACK_FUNCTION(callbackFunctName) \
#endif
Почему бы не использовать ifndef? – Dariusz
'#elif не определен CUSTOM_CALLBACK_3' не определен? – JustMaximumPower
Что вы пытаетесь сделать? Вы не можете определить макросы, которые содержат другие директивы препроцессора. Вы не можете сделать '# define' или' # if' или '# elif' частью макроса. Ваш макрос должен быть изменен, чтобы убедиться, что он не имеет внутреннего «разветвления». Все макроразветвления должны выполняться «снаружи». Он не может быть «встроен» в макрос. – AnT