define



Php define

Автор Sooqua задал вопрос в разделе Другие языки и технологии

[C++] #define и получил лучший ответ

Ответ от Николай Веселуха[гуру]
#define - директива препроцессора, используемая для определения символьных констант, содержит идентификатор и символьную строку. Компилятор, встретив в исходном коде программы идентификатор, тупо, подставляет вместо него символьную строку, которая соответствует этому идентификатору.
enum - перечисление - множество поименованных констант, типа int. Каждая из констант может быть инициализирована обычным образом, если инициализация отсутствует, то первая константа имеет значение равное 0, каждая последующая увеличивает своё значение на единицу.
В обоих случаях ни о каком прямом и косвенном доступе не может быть и речи.
Что же касается инициализированных полей класса, то мало сделать их статическими, также требуется сделать их и константными.
....
class test {
public:
static const short MoveType_None = 0;
static const short MoveType_Left = 1;
};
int main() {
test::MoveType_Left;// теперь можно обратиться
return 0;
}
То же, но со структурой.. .
struct test {
static const short MoveType_None = 0;
static const short MoveType_Left = 1;
};
int main() {
test::MoveType_Left;
return 0;
}

Ответ от (((d(O_O)b))[гуру]
enum религия использовать запрещает?

Ответ от Grouptv11[мастер]
Создай класс, и вызывай значения статистических элементов класса без создания экземпляра..

Ответ от Superior Oracle[гуру]
Согласен с предыдущим, но статические константы должны описываться за пределами описания класса.
Т. е. ,
struct test { // описание класса в заголовочном файле (*.H)
static const short MoveType_Nоne;
static const short MoveType_Left;
};
const short test::MoveType_Nоne = 0; // эта строка должна быть в другом файле (*.CPP), причём только в одном
Логичнее использовать enum
и namespace
namespace MoveType
{
enum { None = 0, Left = 1 };
}
или структуру/класс
struct MoveType
{
enum { None = 0, Left = 1 };
};
Обращаться через ::, а не через.
например, MoveType::Left

Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: [C++] #define
Препроцессор Си на Википедии
Посмотрите статью на википедии про Препроцессор Си
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*