Я чувствую, что каждый раз, когда я читаю программу на C или C++, половина или несколько из них - это просто макросы. Я понимаю, что макросы могут быть классными, но их трудно отследить, отладить и т. Д. Не говоря уже о том, что большинство языков программирования даже не определяют что-то вроде макросов (хотя Perl6 будет иметь что-то подобное).Зависит от макросов
Я лично всегда нашел способ написать свой код без использования макросов, будь то с шаблонами, множественным наследованием и т. Д. Я даже чувствовал, что я не очень хороший программист, потому что все профи используют макросы, и я стараюсь избегайте их как можно больше.
Вопрос в том, есть ли проблемы, которые не могут быть решены без макросов? Являются ли макросы в конечном итоге хорошей/плохой практикой? Когда следует рассмотреть использование макроса?
Ну, вы не можете использовать шаблоны в C, так что это одна из причин. – detly
Какой код вы читали, если чувствуете, что «все профи используют макросы»? Все здравомыслящий код на C++, который я знаю, довольно трудно избежать. В C это немного отличается, потому что у вас нет много альтернатив. Кстати, почему это помечено C вообще? Ваш вопрос * звучит * довольно специфично для C++, указывая шаблоны и наследование. C и C++ - это разные языки, вы знаете. – jalf
Точно, что @jalf сказал - они могут иметь некоторые сходства, но когда дело доходит до генерации кода, они совершенно разные планеты. Например, [Идиома генерации X-макроса/таблицы] (http://stackoverflow.com/questions/2927245/looking-for-a-good-explanation-of-the-table-generation-macro-idiom) – detly