Я пишу макросы для уменьшения кодирования в платформе и сталкиваюсь с проблемой, когда пользователи имеют возможность ввести квалификатор const.Проблема в том, что позднее макрос может попытаться присвоить значение значению.Если параметр является константой, я бы хотел, чтобы присвоение просто игнорировалось.
Простой макрос ниже демонстрирует, с чем я сталкиваюсь:
#define DECLARE_AND_ASSIGN(type, param, init_val, later_val) \
type param = init_val; \
param = later_val;
Ниже отлично работает:
DECLARE_AND_ASSIGN( int, foo, 0, 42 )
Но это, очевидно, не скомпилируется, потому что const назначается после инициализации:
DECLARE_AND_ASSIGN( const int, bar, 0, 42 )
Есть ли способ кодировать макрос, чтобы компилятор игнорировал значения const, являющиесяназначены?(Кодирование на C ++ на VS2017)