Использование static, const
Доброе время суток. Такой вот вопрос наметился у меня... В каких случаях лучше использовать static (либо static const) вместо new; const вместо макроса?
Ранее я static использовал только в тех случаях, когда переменная нужна лишь внутри одной функции, но при этом должна сохранять свое значение на глобальном уровне. Например:
Код:
#define MAX_PLAYERS_LENGTH 4//если вдруг изменится предел игроков, везде 4 менять не в прикол
public OnPlayerConnect(playerid)
{
static MAX_ONLINE;
if(Iter_Count(Player) > MAX_ONLINE)
MAX_ONLINE++;
new string[57+(-2+MAX_PLAYERS_LENGTH)+1];
format(string, sizeof(string), "Новый рекорд! На сервере сегодня максимум было %d игроков", MAX_ONLINE);
SendClientMessageToAll(-1, string);
}
Часто замечаю использование static и в простых участках кода, где он, казалось бы, не нужен. Назревает вопрос: когда его лучше использовать, а также в каких случаях им не стоит злоупотреблять. И аналогично хотелось бы узнать за const... Почему бы везде пишут
Код:
#define MAX_HOUSES 100
Когда ничего не мешает сделать
Код:
const MAX_HOUSES = 100;
Либо же вообще что-то подобное:
Код:
stock FuncName(arg1, arg2, const arg3) return 1;//неважно что возвращает