PDA

Просмотр полной версии : [Вопрос] Назв. орг, свитч или массив?



StevenH
17.06.2016, 02:29
Доброго времени суток. Где лучше хранить название организаций, рангов в массиве или каждый раз через switch?

Desulaid
17.06.2016, 02:49
Массив.

Daniel_Cortez
17.06.2016, 18:20
В массиве, естественно. Только следует иметь в виду, что при обращении к массиву следует проверять правильность индекса, чтобы не допустить выхода за пределы массива.


new const family_names[3][]
{
{"Нет"},
{"Полиция"},
{"Армия"},
};



new family = player_info[playerid][pFamily];

// Проверка правильности ID организации (вдруг в моде баг или админ по ошибке поставил не тот ID?)
// По схожему принципу должны проверяться все индексы, которые зависят от вводимых игроком данных.
if ((family < 0) || (family >= sizeof(family_names)))
return 0; // Здесь можно вывести какое-нибудь сообщение об ошибке.

// Для примера выведем название в консоль.
printf("Организация: %s", family_names[family]);

Blood
17.06.2016, 22:32
В массиве, естественно. Только следует иметь в виду, что при обращении к массиву следует проверять правильность индекса, чтобы не допустить выхода за пределы массива.


new const family_names[3][]
{
{"Нет"},
{"Полиция"},
{"Армия"},
};



new family = player_info[playerid][pFamily];

// Проверка правильности ID организации (вдруг в моде баг или админ по ошибке поставил не тот ID?)
// По схожему принципу должны проверяться все индексы, которые зависят от вводимых игроком данных.
if ((family < 0) || (family >= sizeof(family_names)))
return 0; // Здесь можно вывести какое-нибудь сообщение об ошибке.

// Для примера выведем название в консоль.
printf("Организация: %s", family_names[family]);



new family = player_info[playerid][pFamily];
Не лучше ли тут сделать макрос ?

#define family player_info[playerid][pFamily]

L0ndl3m
17.06.2016, 23:47
new family = player_info[playerid][pFamily];
Не лучше ли тут сделать макрос ?

#define family player_info[playerid][pFamily]
Во время компиляции макросы удаляются и заменяются на исходный вариант.

Desulaid
18.06.2016, 00:23
new family = player_info[playerid][pFamily];
Не лучше ли тут сделать макрос ?

#define family player_info[playerid][pFamily]

Много раз обращаться через массив будет затратнее по времени, чем к переменной.