Недавно я обнаружил, и я начал использовать в моем препроцессоре следующего кода:C++ препроцессор __typeof
#define FOREACH(i,s) for(VAR(i,(s).begin()); i != (s).end(); i++)
#define VAR(a,b) __typeof(b) a=(b)
что делает мой переборе легче. Но, к сожалению, я не совсем понимаю вторую строку, особенно ключевое слово __typeof
(и почему эти два символа подчеркивания используются). Я также предположил, что все выражение __typeof(b)
является типом, но когда я беру его в круглых скобках, почему он не работает?
«Недавно я нашел, и я начал использовать в своем препроцессоре следующий код:« Теперь самое подходящее время для остановки. Обфускация управляющих операторов с использованием макросов - очень плохая идея. –
Хорошие ответы были даны, я бы хотел добавить, что вы не должны использовать все это сейчас, с помощью C++ 11, когда вы можете использовать диапазон на основе http://en.wikipedia.org/wiki/C% 2B% 2B11 # Range-based_for-loop – Lol4t0
Действительно, этот range_based-for (аналогичный Java) решит проблему. Я знаю, что для других такой код не ясен, но он помогает мне сохранить мой код более прозрачным (конечно, я использую такие макросы только при написании программ для собственного использования) – JosephConrad