[Ajuda] Dois enums com mesmo nome em 2 arquivos diferentes
#1

Pra nгo termos problemas com variбveis de mesmo nome em 2 arquivos diferentes, usamos o static ao invйs do new, certo?

Como eu poderia fazer isso se tratando de enum?
Reply
#2

Nгo. Nгo tem absolutamente nada a ver isso. New e Static tem propriamente dito o mesmo papel que й criaзгo de uma variбvel.

Hгo lido com Pawn a muitos anos entгo nгo tenho contato com sua sintaxe. Enums sгo variбveis tambйm, logo, vocк nгo pode ter nomes iguais.

Se vocк tem um enum em um escopo local entгo nгo tem problema repetir o nome em outro escopo local, mas quando se cria um enum em um escopo global, nгo se pode repetir o mesmo. Й a mesma regra de variбveis.
Reply
#3

Quote:
Originally Posted by JoaoPedro
Посмотреть сообщение
Nгo. Nгo tem absolutamente nada a ver isso. New e Static tem propriamente dito o mesmo papel que й criaзгo de uma variбvel.
https://sampwiki.blast.hk/wiki/Keywords:Initialisers#static

Quote:
Originally Posted by Wiki SA-MP;
"This means you can have two globals of the same name in different files."
Й o que tem na wiki.

Quote:
Originally Posted by JoaoPedro
Посмотреть сообщение
Enums sгo variбveis tambйm, logo, vocк nгo pode ter nomes iguais.

Se vocк tem um enum em um escopo local entгo nгo tem problema repetir o nome em outro escopo local, mas quando se cria um enum em um escopo global, nгo se pode repetir o mesmo. Й a mesma regra de variбveis.
Pois й, tф fazendo isso sу pra evitar que caso alguйm crie uma variбvel com o mesmo nome da minha dк erro. Mas eu vou criar um enum com um prefixo exclusivo mesmo, entгo. Valeu!
Reply
#4

Ok, deixa eu corrigir entгo. O static cria uma variбvel global onde seu escopo й o arquivo que ele estб. Perfeito.

Agora em relaзгo ao enum acredito que nгo й possivel.
Reply
#5

A declaraзгo de constantes enumeradas tambйm pode ser feita por static const, alйm do mйtodo por enum .



Por exemplo, estas constantes declaradas por enum:


pawn Код:
enum
{
    Letra,
    Numero,
    Caractere
};

Poderiam ser declaradas por :


pawn Код:
static const Letra = 0;
static const Numero = 1;
static const Caractere = 2;

Esse outro mйtodo resolveria o seu problema, visto que nele as constantes sгo declaradas com static.



Espero ter ajudado .
Reply
#6

Mas eu me refiro especificamente ao nome do enum.

Exemplo:
pawn Код:
enum pInfo
{
    // ...
};
Reply
#7

Quote:
Originally Posted by Rodney Francalim
Посмотреть сообщение
Mas eu me refiro especificamente ao nome do enum.

Exemplo:
pawn Код:
enum pInfo
{
    // ...
};
Sendo assim vocк pode utilizar #define para redefinir o nome ao final de cada arquivo de cуdigos. Dessa forma, seria como se a cada declaraзгo de enum com o mesmo nome um novo nome fosse utilizado .



Veja este cуdigo:


pawn Код:
#include <a_samp>



enum Nome
{
    A,
    B,
    C
};



main()
{
    printf("%d", _:Nome);
}



#define Nome NovoNome



enum Nome
{
    D,
    E
};

O nъmero mostrado pelo printf seria 3, pois Nome englobaria trкs constantes: A, B e C. Com o cуdigo a seguir, porйm, o printf mostraria 2, pois Nome englobaria duas constantes, D e E, e equivaleria a NovoNome, que seria na verdade uma nova enumeraзгo .


pawn Код:
#include <a_samp>



enum Nome
{
    A,
    B,
    C
};



#define Nome NovoNome



enum Nome
{
    D,
    E
};



main()
{
    printf("%d", _:Nome);
}


Espero ter ajudado .
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)