Linguagem C, transbordando dados

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Re: Linguagem C, transbordando dados

Mensagempor Rodrigo_P_A » 19 Nov 2013 16:19

goto é proibido? pq existe?

pq no código fonte do linux tem um monte de goto?

cada uma....
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Re: Linguagem C, transbordando dados

Mensagempor andre_luis » 19 Nov 2013 22:00

É apenas uma questão de "boas práticas" de programação, a menos que seja algo que deva ser executado imediatamente.
Um programa cheio de atalhos fica difícil de debugar, e pessoalmente, acho mais inteligível trabalhar na base dos flags.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Linguagem C, transbordando dados

Mensagempor ze2 » 20 Nov 2013 07:16

Sinistro... uma prática "com poucas recomendações" pode ter sido uma solução pra quem usa um compilador também com.

goto a put a keep are you. cara, acho que isso num tem nada a ver. to precisando tomar [mais] uma cachaça
ze2
Byte
 
Mensagens: 193
Registrado em: 09 Fev 2009 13:37

Re: Linguagem C, transbordando dados

Mensagempor vtrx » 20 Nov 2013 15:06

Hoje em dia isso é mais um mito.
É que não recomendam usat GOTO em C pois GOTO gera um salto incondicional,e tanto o compilador como o 'programador' podem se 'perder' ,mas acho que é mais provavel o compilador se perder.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Re: Linguagem C, transbordando dados

Mensagempor andre_luis » 20 Nov 2013 15:41

É questão de estruturação do programa, pois fica de tal modo entrelaçado, dando a impressão de que foi adaptado pra funcionar, e não planejado.
O conceito de camadas acaba se perdendo quando se planta atalhos, pois não é possível criar funções dedicadas isoladas do restante.

Obviamente, quando é realmente justificável, é o que deve ser feito, mas se puder ser evitar, melhor.


Nota: Já fiz no ASM uma rotina PWM mínima, que usava GOTO misturado com CALL, que o compilador dava erro de estouro de pilha constantemente, mas isso foi intencional e é um caso em que o GOTO foi justificado.


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Linguagem C, transbordando dados

Mensagempor vtrx » 21 Nov 2013 07:45

: Já fiz no ASM uma rotina PWM mínima, que usava GOTO misturado com CALL, que o compilador dava erro de estouro de pilha constantemente, mas isso foi intencional e é um caso em que o GOTO foi justificado.

Tem que prestar atenção.
Uma rotina que foi programada para ser chamada com CALL,tem um instrução de retorno ao final,se chamar esta rotina com GOTO,quando ela for executada,ela vai executar no final uma instrução de retorno de sub rotina mas não vai ter endereço de retorno na pilha pois foi chamada com GOTO e não CALL,isso vai gerar estouro da pilha depois de algumas chamadas.
O mesmo se chamar uma rotina com CALL que não tem como ultima instrução um retorno de subrotina,cada chamada CALL vai guardar o endereço de retorno na pilha,mas sem a instrução final de retrono vai encher a pilha até 'estourar'.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Re: Linguagem C, transbordando dados

Mensagempor andre_luis » 22 Nov 2013 18:28

vtrx escreveu:
: Já fiz no ASM uma rotina PWM mínima, que usava GOTO misturado com CALL, que o compilador dava erro de estouro de pilha constantemente, mas isso foi intencional e é um caso em que o GOTO foi justificado.


...isso vai gerar estouro da pilha depois de algumas chamadas.


Na compilação dava ERRO, mas na execução dentro do uC não era problema algum.
Apenas citei como exemplo da utilização do GOTO desestruturando um programa, mas foi intencional...como disse antes.


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Anterior

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Google [Bot] e 1 visitante

cron

x