sizeof(Enum) -
AndreOliveira - 27.04.2014
Existe alguma include que me permita fazer isso:
sizeof(Player[playerid][teste])?
Re: sizeof(Enum) -
VeNuZ_ - 27.04.2014
Ja o fez -.-'
Re: sizeof(Enum) -
AndreOliveira - 27.04.2014
.... ?
Re: sizeof(Enum) -
AndreOliveira - 27.04.2014
A questгo й: testou?
Re: sizeof(Enum) -
VeNuZ_ - 27.04.2014
Nгo, a questгo й acha bem insultar uma pessoa que o tenta ajudar ?
Nгo nгo testei, e enum = a new de um conjunto ordenado.
Tem de fazer algo do gйnero disto, ou seja decalar o valor mбximo..
( nгo sei se a forma do enum estarб correcta. ).
Re: sizeof(Enum) -
AndreOliveira - 27.04.2014
Код:
enum eTeste
{
teste[32]
}
new pTeste[MAX_PLAYERS][eTeste];
sizeof(pTeste[playerid][teste]);
Segundo a sua teoria o cуdigo acima funciona, vai la testar..
Re: sizeof(Enum) -
rjjj - 27.04.2014
No passado, quando eu fazia GMs de RPG, deparei-me vбrias vezes com esse problema e nгo encontrei uma maneira de resolvк-lo. Eu sempre acabava verificando, no cуdigo da enumeraзгo, o tamanho da array constante quando precisava dele

.
O problema em questгo consiste basicamente em obter, por um mйtodo como o do
sizeof, o tamanho de uma array constante de uma enumeraзгo, como a array
Segunda deste cуdigo:
pawn Код:
enum Constantes
{
Primeira,
Segunda[45],
Terceira[30]
};
new Array[10][Constantes];
Por mais que nгo aparente, nгo й possнvel obter apenas com
sizeof o tamanho da array
Segunda, que й 45

.
A expressгo
sizeof(Array), sintaticamente correta, resultaria em 10, o tamanho da primeira dimensгo da array
Array. Por sua vez, a expressгo
sizeof(Array[]), tambйm sintaticamente correta, equivaleria a 76, o tamanho da segunda dimensгo de
Array e tamanho total da enumeraзгo, sendo que as constantes
Primeira,
Segunda e
Terceira teriam respectivamente os tamanhos 1, 45 e 30.
Qualquer outra tentativa, como
sizeof(Segunda), geraria erros de compilaзгo ou nгo forneceria o tamanho verdadeiro da array
Segunda 
.
Estudando a situaзгo, descobri que a expressгo
sizeof(Array[Segunda]) resultava em 45, o tamanho certo, quando a array
Array era declarada desta forma:
Em vez desta

:
pawn Код:
new Array[10][Constantes];
Sendo assim, para o cуdigo original algo como
sizeof(Array[0][Segunda]) ou
sizeof(Array[][Segunda]) resultaria em 45. Isso, porйm, nгo passou de uma expectativa, visto que verifiquei que essas expressхes tambйm geravam erros de compilaзгo.
Percebi que provavelmente havia uma limitaзгo do compilador em relaзгo a aceitar uma sintaxe que funcionasse. A soluзгo que encontrei foi usar uma array intermediбria

:
pawn Код:
enum Constantes
{
Primeira,
Segunda[45],
Terceira[30]
};
new Array[10][Constantes];
new const Buffer[sizeof(Array[])];
#pragma unused Buffer
pawn Код:
printf("Tamanho da array 'Segunda': %d.", sizeof(Buffer[Segunda]));
A minha conclusгo й que se trata de uma incapacidade do compilador, que talvez nгo esteja presente em versхes mais recentes do Pawn com as quais o SA-MP nгo trabalha.
Espero ter ajudado

.
Re: sizeof(Enum) -
ProKillerpa - 27.04.2014
Grande rjjj
Re: sizeof(Enum) -
VeNuZ_ - 27.04.2014
Rjj vocк tem jeito com a parte teуrica de explicar as coisa !