Dúvida em C

Para "abobrinhas" use o " Boteco"

Moderadores: andre_luis, 51, guest2003, Renie

Dúvida em C

Mensagempor ÁgioFelipe » 07 Nov 2017 09:38

Amigos, uma simples dúvida que me surgiu agora:
Vou usar como exemplo a biblioteca da serial do C18.
Bem, para que eu use a função getsUSART no meu programa, basta que eu inclua no cabeçalho o arquivo usart.h.
Abrindo o usart.h , como ele é um arquivo hearder, vou encontrar apenas a declaração da função, está lá:

void getsUSART ( char *buffer, unsigned char len);

Não existe nele nada sobre como a função é implementada.
Procurando dentro do diretório do compilador C18, encontrei um arquivo chamado ugets que contém a implementação da função getsUSART, segue o arquivo:
Código: Selecionar todos
#include <p18cxxx.h>
#include <usart.h>

/********************************************************************
*    Function Name:  getsUSART                                      *
*    Return Value:   void                                           *
*    Parameters:     buffer: pointer to string                      *
*                    len: length of characters to receive           *
*    Description:    This routine receives a string of characters   *
*                    from the USART of length specified by len.     *
********************************************************************/
#if defined (AUSART_V1) || defined (EAUSART_V3) || defined (EAUSART_V4) || defined (EAUSART_V5)

void getsUSART(char *buffer, unsigned char len)
{
  char i;    // Length counter
  unsigned char data;

  for(i=0;i<len;i++)  // Only retrieve len characters
  {
    while(!DataRdyUSART());// Wait for data to be received

    data = getcUSART();    // Get a character from the USART
                           // and save in the string
    *buffer = data;
    buffer++;              // Increment the string pointer
  }
}

#endif


A pergunta é: Em usart.h não existe ou pelo menos não encontrei nenhuma menção ao arquivo ugets, como a função é então encontrada pelo compilador?
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Re: Dúvida em C

Mensagempor vtrx » 07 Nov 2017 09:55

Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Re: Dúvida em C

Mensagempor ÁgioFelipe » 07 Nov 2017 13:45

vtrx escreveu:CLICK AQUI MANUAL C18


Acho que a dúvida é sobre C, não o compilador C18 especificamente.
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Re: Dúvida em C

Mensagempor vtrx » 07 Nov 2017 17:23

A pergunta é: Em usart.h não existe ou pelo menos não encontrei nenhuma menção ao arquivo ugets, como a função é então encontrada pelo compilador?

Acho que a pergunta é como o compilador utiliza a função.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Re: Dúvida em C

Mensagempor pamv » 07 Nov 2017 17:37

Se eu entendi bem, você quer saber como essa função getUSART é resolvida durante a etapa de link já que não há nenhuma menção ao ugets.c.
Se você olhar as libs do C18, você verá que ela foi compilada e adicionada às bibliotecas (usei o strings pois o nm e ar não funcionam com as libs do c18)

Código: Selecionar todos
tinto$ strings p18f86j93_e.lib| grep -i ugets.[c,o]
ugets.o/                                                                                                                                                                                                                                                        1384450104l
.udata_ugets.o
.idata_ugets.o
.romdata_ugets.o
.code_ugets.o
E:\3.46\pic18-lt\cxx-framework\src\pmc_common\USART\ugets.c
pamv
Word
 
Mensagens: 842
Registrado em: 20 Jun 2016 21:47


Voltar para Assuntos Gerais

Quem está online

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

cron

x