У меня есть макрос в функции, которая создает экземпляр переменной данного типа (и делает пару других вещей, которые не имеют значения).Как долго длится typedef?
По существу MACRO(foo, f)
расширяется до foo f;
Но если foo
это сказать std::map<int, int>
то расширение не удается из-за дополнительной запятой.
Я обхожу это, написав typedef std::map<int, int> bar;
, а затем MACRO(bar, b)
.
Я обеспокоен тем, что я утечка typedef
s в источник программы, который может вызвать у меня проблемы в будущем.
Итак, как долго длится typedef
?
Возможно, вы можете прочитать о проблеме [XY Problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – jtbandes
Подождите, так что вы говорите, что ' typedef std :: map foo; MACRO (foo, f) 'не компилируется? Я считаю, что трудно поверить. –
CompuChip
btw "(и делает пару других вещей, которые не актуальны)" - довольно распространенное заблуждение. Нет ничего несущественного, если это связано с вопросом. Если ваш вопрос связан с макросом, тогда покажите нам макрос (или дистиллированную версию, которая показывает то же поведение в отношении вопроса), но, пожалуйста, не утверждайте, что это не имеет значения. – user463035818