Я только что прочитал некоторый код, подобный следующему:C++ используется вместо константного значения
enum
{
width = 123,
height = 321,
position_x = 234
position_y = 432
};
...
Widget* w = CreateWidget(position_x, position_y, width, height);
Есть ли какая-либо причина использовать перечисление в этом случае вместо макросов или константных значений?
EDIT: Правильно ли использовать перечисление следующим образом? Является ли это использование рассмотрением какого-либо злоупотребления в использовании перечислений?
Хотя есть много причин не использовать макросы. –
В общем случае, да. В этом конкретном примере трудно сказать, почему определение препроцессора было бы проблемой. –
Это было бы проблемой даже здесь: препроцессор не ограничивается правилами определения языка, поэтому имена не могут использоваться ни для чего, кроме констант в любом контексте. (Конечно, вы можете обойти это с помощью обычного соглашения об особых соглашениях об именах для макросов.) –