В чем преимущества и недостатки использования #define над const (и наоборот)?
В C++ лучше использовать #define или const, чтобы избежать магических чисел?
Когда я читал о плохой практике программирования, а именно о магических числах, я чаще использовал #define. Некоторые вопросы возникли у меня в голове, например:
Плохо ли использовать #define много?
Требуется ли объем памяти?
Быстрее ли использовать const?
Я читал немного об этом, но я все еще не уверен, из того, что я понял:
#define определяет макрос (не уверен, что означает макрос), и он имеет дело с предварительной обработкой. Он заменяет все экземпляры определенного ключевого слова на что-то еще до того, как код обрабатывается. const, с другой стороны, является переменной, значение которой не может быть изменено в середине во время выполнения.
Единственная причина, по которой я могу думать об использовании const, - это то, что значение зависит от других переменных. Например:
#define PI 3.14159f
#define RADIUS 3.0f
#define AREAOFCIRCLE PI*RADIUS*RADIUS
будет неэффективным, поскольку каждый экземпляр AREAOFCIRCLE будет заменен PI * RADIUS * RADIUS поэтому программа будет вычислять для него каждый раз, когда вы используете AREAOFCIRCLE. С другой стороны:
const float areaofcircle = PI*RADIUS*RADIUS;
было бы более эффективным, поскольку программа будет вычислять его только один раз.
Итак, вернемся к исходному вопросу, как #define сравнить с const?
Возможный дубликат: http://stackoverflow.com/questions/6274008/why-would-someone-use-define-to-define-constants?rq = 1 – lolando
Я читал это, но меня не устраивает какой-либо из ответов – DarkPotatoKing
Неправильно ли использовать '# define'? Старайтесь не использовать его вообще! –