Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Este aviso não deve ser dado, porque a função ObjectGetDouble passa uma referência e a declaração se verifica a verdade retornada por ambas as chamadas, e portanto só se ambas as funções retornarem verdade, então estas variáveis são tratadas, o que significa que ambas as variáveis não podem ser definidas para o valor correcto.
O compilador não expande a sua mente o suficiente para garantir que estas variáveis serão necessariamente inicializadas como resultado de uma chamada ObjectGetDouble. Tente escrever o seu próprio, onde o valor para o parâmetro de entrada passado por referência será definido explicitamente. O que dirá o compilador?
Rashid, não é realmente "consciência" de todo, é matemática.
Rashid, não é realmente "consciência" de todo, é matemática.
1. Existe algo como "avaliação abreviada de expressões lógicas".
2. O compilador não pode saber ao certo se a variável passada por referência será preenchida.
3. Um aviso é apenas isso, um aviso para chamar a sua atenção para a possibilidade de surgir um problema.
Rashid, não é realmente "consciência" de todo, é matemática.
Ok, vamos definir uma tal fusão
Existe aqui uma garantia de que a variável param será inicializada?Ok, vamos definir uma tal ffrunctura
Existe alguma garantia de que a variável param será inicializada?Esta é uma função em que o resultado "param" NÃO é alterado. Portanto, aqui o aviso deve ser dado a 1000% :)
A solução padrão aqui é esta: se houver um ramo de execução de código onde o valor não possa ser alterado, considera-se que esta função não altera o valor. E irá gerar um aviso.
Rashid, queres que eu pegue em qualquer um dos compiladores C++ e C modernos e compile tal código e estou certo de que nenhum deles dará um aviso à esquerda.
Além disso, se tiver tais "problemas" na detecção de tais coisas, de repente começa a ter uma dúvida muito forte de que não existe qualquer optimização enquanto tal. Ou será que existe?
Rashid, queres que eu pegue em qualquer um dos compiladores C++ e C modernos e compile códigos semelhantes e tenho a certeza de que nenhum deles dará um aviso de esquerda.
De que é que estamos a discutir? w0 não ponha
PS Haverá definitivamente uma mensagem (talvez algumas linhas abaixo)
Isto não é claramente uma melhoria, especialmente se existem tais "problemas" com a detecção de tais coisas, então uma GRANDE dúvida arrepia-se na medida em que não há qualquer optimização como tal. Ou será que existe?
Se olhar para a ajuda para ObjectGetDouble:
Retorna verdadeiro ou falso, dependendo do sucesso da função. Se bem sucedido, o valor do bem é colocado na variável de destino, passado por referência pelo último parâmetro.
Assim, concluímos que o preenchimento da variável receptora não é garantido em caso de qualquer erro. É por isso que a mensagem do compilador é válida.
IMHO.
Algo está fora de sincronia na construção mais recente.
Fazendo uma pequena EA:
A executar o testador,
2011.02.22 11:54:21 Core 1 2011.02.07 00:00:00 Tudo está OK!
Faço alterações à minha EA:
Compilo-o, faço o teste, ele responde:
2011.02.22 11:57:55 Core 1 2011.02.07 00:00:00:00 Tudo normal!
Só ajuda a reiniciar o terminal.
Algo está fora de sincronia na construção mais recente.
Fazendo uma pequena EA:
A executar o testador,
2011.02.22 11:54:21 Core 1 2011.02.07 00:00:00 Tudo está OK!
Faço alterações à minha EA:
Compilo-o, faço o teste, ele responde:
2011.02.22 11:57:55 Core 1 2011.02.07 00:00:00:00 Tudo normal!
Só ajuda a reiniciar o terminal.