Uma dúvida curiosa de principiante

Software e Hardware para uC STM

Moderadores: andre_luis, 51

Uma dúvida curiosa de principiante

Mensagempor Guri » 03 Abr 2021 13:04

Qual é a diferença de declarar um determinado tipo de protótipo "antes" do MAIN e depois do MAIN, é só estética? :D
DEUS SEJA LOUVADO
GURI (VonNilmam)
Guri
Byte
 
Mensagens: 457
Registrado em: 25 Abr 2010 09:05
Localização: Minas Gerais

Re: Uma dúvida curiosa de principiante

Mensagempor andre_luis » 03 Abr 2021 16:54

No século passado era mandatório para o compilador declarar 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

Re: Uma dúvida curiosa de principiante

Mensagempor Guri » 06 Abr 2021 11:02

aluis-rcastro escreveu:No século passado era mandatório para o compilador declarar antes.

:lol: :lol: Essa foi boa...kkk
DEUS SEJA LOUVADO
GURI (VonNilmam)
Guri
Byte
 
Mensagens: 457
Registrado em: 25 Abr 2010 09:05
Localização: Minas Gerais

Re: Uma dúvida curiosa de principiante

Mensagempor Rodrigo_P_A » 06 Abr 2021 11:45

aluis-rcastro escreveu:No século passado era mandatório para o compilador declarar antes.


Ainda é, se não declarar antes de usar, vai dar erro, o linker não vai encontrar a rotina.
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2236
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Re: Uma dúvida curiosa de principiante

Mensagempor ÁgioFelipe » 06 Abr 2021 20:06

Rodrigo_P_A escreveu:
aluis-rcastro escreveu:No século passado era mandatório para o compilador declarar antes.


Ainda é, se não declarar antes de usar, vai dar erro, o linker não vai encontrar a rotina.

Não é mais, na arduino IDE por exemplo, não precisa declarar antes do main.
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Re: Uma dúvida curiosa de principiante

Mensagempor Rodrigo_P_A » 06 Abr 2021 23:15

Entendi, não entendo nada de arduino. Com compilador gcc e outros de linguagem c/c++ é necessário.

O Arduino faz alguma coisa por trás pra facilitar a vida do usuário


Enviado do meu iPhone usando Tapatalk
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2236
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Re: Uma dúvida curiosa de principiante

Mensagempor sync » 07 Abr 2021 00:11

ÁgioFelipe escreveu:
Rodrigo_P_A escreveu:
aluis-rcastro escreveu:No século passado era mandatório para o compilador declarar antes.


Ainda é, se não declarar antes de usar, vai dar erro, o linker não vai encontrar a rotina.

Não é mais, na arduino IDE por exemplo, não precisa declarar antes do main.

Amigo

O Arduino é um dialeto, embora use o gcc para produzir executáveis, todo o ambiente é próprio dele e não segue os padrões do C/C++, possui os dele mesmo. Eu creio que o colega guri usa um compilador C padrão.
sync
Byte
 
Mensagens: 195
Registrado em: 04 Mai 2020 16:11

Re: Uma dúvida curiosa de principiante

Mensagempor Guri » 07 Abr 2021 22:36

sync escreveu:
ÁgioFelipe escreveu:
Rodrigo_P_A escreveu:
aluis-rcastro escreveu:No século passado era mandatório para o compilador declarar antes.


Ainda é, se não declarar antes de usar, vai dar erro, o linker não vai encontrar a rotina.

Não é mais, na arduino IDE por exemplo, não precisa declarar antes do main.

Amigo

O Arduino é um dialeto, embora use o gcc para produzir executáveis, todo o ambiente é próprio dele e não segue os padrões do C/C++, possui os dele mesmo. Eu creio que o colega guri usa um compilador C padrão.


Eu utilizo o truestudio da STM e também o queridinho Mikroc. Eu levantei essa questão pelo fato de não ver o do porque alocar o protótipo antes ou depois do MAIN.
:D
DEUS SEJA LOUVADO
GURI (VonNilmam)
Guri
Byte
 
Mensagens: 457
Registrado em: 25 Abr 2010 09:05
Localização: Minas Gerais

Re: Uma dúvida curiosa de principiante

Mensagempor cfreund » 08 Abr 2021 19:55

Em versões mais recentes, realmente não é necessário. Porém, é conveniente e mais elegante fazê-lo. E também mantém a portabilidade.
Cláudio F
Avatar do usuário
cfreund
Word
 
Mensagens: 672
Registrado em: 14 Out 2006 14:02
Localização: São Paulo

Re: Uma dúvida curiosa de principiante

Mensagempor sync » 08 Abr 2021 20:33

cfreund escreveu:Em versões mais recentes, realmente não é necessário. Porém, é conveniente e mais elegante fazê-lo. E também mantém a portabilidade.


Colega
No C99 é necessário declarar o protótipo antes de fazer referência, as exceções são por conta dos compiladores.
sync
Byte
 
Mensagens: 195
Registrado em: 04 Mai 2020 16:11

Re: Uma dúvida curiosa de principiante

Mensagempor Rodrigo_P_A » 08 Abr 2021 20:42

Exemplo 1:
No caso abaixo, vc tem dois arquivos fonte: arquivo1.c e arquivo2.c
Se vc tentar compilar sem informar que a rotina minha_funcao() é externa, o compilador de verdade sem enfeites vai dar erro.

Mesmo se a função estivesse no arquivo.c abaixo do main, daria erro, e vc podeira ter declarado do mesmo jeito que fiz, sendo extern, que ele iria "procurar" sozinho.

Isso vale para variáveis globais.

Os arquivos .h são conjuntos com várias declarações de funções, variáveis, etc.
Você poderia ter declarado em um arquivo .h :
extern void minha_funcao();
e ter incluido o arquivo .h no seu arquivo em C ou vários deles.

arquivo1.c
Código: Selecionar todos
extern void minha_funcao();

int main(int argc,char *argv[]) {
   minha_funcao();
   return 0;
}


arquivo2.c
Código: Selecionar todos

void minha_funcao()
{
  // faz alguma coisa, sei lá o que
}
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2236
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil


Voltar para STMicroelectronics

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x