Quote:
Originally Posted by NathanT
Posso ter sido raso na pergunta mas me refiro а aplicaзгo, se hб alguma peculiaridade no mйtodo de estabelecermos um valor constate com a diretiva #define ou com a keyword const.
Que ambos estabelecerгo um valor que nгo poderб ser alterado posteriormente, disso eu conheзo.
|
Uma variбvel const estб sujeita аs regras de escopo para variбveis, enquanto uma constante criada usando #define nгo й. Ao contrбrio de uma variбvel const, o valor de uma macro nгo aparece no cуdigo-fonte intermediбrio usado pelo compilador porque elas sгo expandidas em linha. Logo o que isso significa? Poderiamos dizer que й apenas uma "substituiзгo".
Logo, isso:
PHP код:
//Exemplo 1
#define EXEMPLO "Teste"
public OnGameModeInit()
{
print(EXEMPLO);
return 1;
}
Seria equivalente a isso:
PHP код:
//Exemplo 2
public OnGameModeInit()
{
print("Teste");
return 1;
}
Apуs a compilaзгo, ambos os mйtodos vгo ser a mesma coisa que o exemplo 2, pois como dito anteriormente, as macros sгo expandidas em linha, entгo nгo passa de uma "substituiзгo".
Outro detalhe: Uma macro pode ser usada em uma expressгo constante, como limite de uma matriz, enquanto uma variбvel const nгo pode.
Ex:
PHP код:
new const exemplo = 1000;
new meu_exemplo[exemplo];
O exemplo acima vai resultar no seguinte erro:
error 008: must be a constant expression; assumed zero
Porйm o exemplo abaixo vai funcionar, pois como dito antes, macros sгo expandidas em linha:
PHP код:
#define exemplo 100
new meu_exemplo[exemplo];