PDA

Просмотр полной версии : [Вопрос] #define или new



Igor_Stalker
29.07.2016, 14:16
Как лучше сделать?
Так?


CMD:skin(playerid,params[])
{
log
#define id params[0]
#define skin params[1]
if(PlayerInfo[playerid][pAdmin] < 3) return SCM(playerid,COLOR_RED,"Âû íå Ãëàâíûé Àäìèíèñòðàòîð");
if(sscanf(params,"ud",id,skin)) return SCM(playerid,COLOR_WHITE,"Ââåäèòå: /skin [id][id ñêèíà]");
if(!IsPlayerConnected(id)) return SCM(playerid,COLOR_RED,"Äàííîãî èãðîêà ñåé÷àñ íåò íà ñåðâåðå");
SetPlayerSkin(id,skin);
PlayerInfo[id][pSkin] = skin;
SaveAccounts(id);
#undef id
#undef skin
return 1;
}

Или так?

CMD:skin(playerid,params[])
{
log
new id,skin;
if(PlayerInfo[playerid][pAdmin] < 3) return SCM(playerid,COLOR_RED,"Âû íå Ãëàâíûé Àäìèíèñòðàòîð");
if(sscanf(params,"ud",id,skin)) return SCM(playerid,COLOR_WHITE,"Ââåäèòå: /skin [id][id ñêèíà]");
if(!IsPlayerConnected(id)) return SCM(playerid,COLOR_RED,"Äàííîãî èãðîêà ñåé÷àñ íåò íà ñåðâåðå");
SetPlayerSkin(id,skin);
PlayerInfo[id][pSkin] = skin;
SaveAccounts(id);
return 1;
}

HarrWe
29.07.2016, 14:18
Как по мне переменные лучше, и ещё не пойму зачем ты сохранение вызываешь в команде, при дисконекте тебе не хватает?

DeimoS
29.07.2016, 14:36
Переменная. Причина: ТЫЩ (http://pro-pawn.ru/showthread.php?12988).

#Johnson
31.07.2016, 16:11
Переменная!

Пример с пояснением:


#define SendMSG(%0,%1) SendClientMessage(%0,0x331166FF,%1) // зададим с параметрами %0 и %1

main()
{
SendMSG(0,"Hello World!"); // в процессе компиляции заменится на SendClientMessage(0,0x331166FF,"Hello World!");
}

VVWVV
31.07.2016, 17:38
Никогда не понимал, зачем люди пытаются везде использовать макросы, которые не оптимизируют код, а наоборот, делают данный код менее читаемым. Мой вам совет: используйте макросы в меру.

Когда вы используете переменную, то вы оптимизируете ваш код, т.к. доступ к переменным намного быстрее, чем доступ к массиву (одна инструкция против нескольких).