Кресты / Говнокод #25369 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
#pragma once

#define ENUM_DECLARE_BEGIN(enum_class, enum_value) \
class enum_class##__enum__##enum_value : public enum_class {

#define ENUM_DECLARE_END(enum_class, enum_value) \
}; extern const enum_class##__enum__##enum_value enum_value;

#define ENUM_DEFINE(enum_class, enum_value, enum_namespace) const enum_class##__enum__##enum_value enum_namespace enum_value;

Запостил: UsernameAK UsernameAK, (Updated )

Комментарии (7) RSS

  • // enum MyBool { Yes, No, Maybe }; 
    class MyBool {
    };
    ENUM_DECLARE_BEGIN(MyBool, Yes)
    ENUM_DECLARE_END(MyBool, Yes)
    ENUM_DECLARE_BEGIN(MyBool, No)
    ENUM_DECLARE_END(MyBool, No)
    ENUM_DECLARE_BEGIN(MyBool, Maybe)
    ENUM_DECLARE_END(MyBool, Maybe)


    ENUM_DEFINE(MyBool, Yes)
    ENUM_DEFINE(MyBool, No)
    ENUM_DEFINE(MyBool, Maybe)


    И что дальше, как этим пользоваться?
    MyBool *isSomething = &No;
    if (checkSomething())
      isSomething = &Maybe;
    ...
    if (isSomething == &Yes)
      doSomething();


    Или enum_class должен наследоваться от какого-нибудь базового класса с перегруженными операторами = и ==?
    Ответить
    • Может как в джавке тупо сравнивать адреса? Собственно как ты и написал в примере.
      Ответить
  • Просто не знаю, раз уж разводится макроебля, так надо и Parse/ToString сделать, иначе зачем. Разве что это и есть, где-то за кадром...
    Ответить
  • до каких пор это гавно под названием препроцессор будет разрешен в языках?
    Ответить
    • препроцессор позволяет не писать много одинакового кода вручную.

      но программисты любят писать много одинакового кода вручную, потому они ненавидят препроцессор
      Ответить
      • вот и напиши программу которая пишет программу и не тронь препроцессор как "хак"
        Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8