Один из моих преподавателей в университете предлагает использовать макросы для уменьшения повторения в коде c99, как это.для стиля кодирования макросов петли
#define foreach(a, b, c) for (int a = b; a < c; a++)
#define for_i foreach(i, 0, n)
#define for_j foreach(j, 0, n)
#define for_ij for_i for_j
который может быть использован, как это:
for_ij { /*do stuff*/; }
for_i { /*do stuff*/; }
Другой преподаватель с промышленным фоном отбивает его использование, утверждая, что это было расценено как анти-паттерна у своего бывшего работодателя (но он не знает, причина этого). Фактически, используя grepping через исходный код больших проектов, редко можно найти эти конструкции за пределами коротких академических примеров.
Мой вопрос: почему эта конструкция так редко используется на практике? Это опасно в какой-то степени?
Вы фактически создаете свой собственный диалект, используя препроцессор. Доиг так всегда чреват опасностью и препятствует пониманию кого-либо еще (или самого себя позже). В любом случае, это вопрос больше для [programers.se], а не SO. – Deduplicator
Как аналог, представьте себе книгу, в которой в предисловии говорилось, что «SR» заменит «Роберт» и «TND» заменит «На следующий день». Вы могли бы это прочитать, но было бы странно сказать наименьшее. –
Когда я учился C (время назад), я был умнее вашего первого преподавателя и делал '#define forloop for (int i = 0; i
rodrigo