| Autor | Mensagem |
|---|
cereja
Joined: 19 jul 2005 Posts: 3
| 25 ago 2005 7:01 Função Ponteiros em C | | |
|
| Quando e em que situações é que podemos utilizar ponteiros de função em C Embedded?
Alguém pode explicar?
Obrigado ..... Cherry |
|
| Voltar ao topo | |
 |
IanP
Joined: 05 out 2004 Posts: 6454 Ajudado: 1535 Localização: Costa Ocidental
| 25 ago 2005 7:24 Re: Função Ponteiros em C | | |
|
| | Citação: | | Ponteiros para funções não são tão comuns como ponteiro outras utilizações. No entanto, uma utilização comum está em uma passagem ponteiros para uma função como um parâmetro em uma chamada de função. | http://www.cs.cf.ac.uk/Dave/C/node12.html Atenciosamente, IanP |
|
| Voltar ao topo | |
 |
echo47
Joined: 07 abr 2002 Posts: 4206 Ajudado: 566
| 25 ago 2005 8:13 Função Ponteiros em C | | |
|
| | Outra aplicação comum é uma função chamada. Por exemplo, você deseja que o Windows para ligar o seu gravador de áudio função cada vez Windows recebe algumas amostras do microfone. Você dá um ponteiro do Windows para o seu gravador de áudio função. |
|
| Voltar ao topo | |
 |
xeque-mate
Joined: 26 fev 2004 Lugares: 489 Ajudado: 35 Localização: Toilet Seat
| 25 ago 2005 13:23 Re: Função Ponteiros em C | | |
|
| Função ponteiros não são frequentemente utilizados em embutidos C, mais para o PC lateral programação. Basicamente, é um ponteiro para uma função e, dependendo de qual o ponteiro aponta para funcionar, você pode executar diferentes funções a serem executadas na mesma linha do código.
Um exemplo da forma como utilizá-lo é que você tem um array de ponteiros função, o que aponta para a mensagem tratadores, cada um dos diferentes tipo de mensagem que está concebido para manter o mesmo índice, enquanto a mensagem manipulador.
Então, você pode chamar qualquer coisa como | Código: | fnPtr [msg-> tipo] (msg);
| [/ code]
Adicionado: Uma possível utilização de ponteiros em função embutida C, é uma tarefa scheduler. |
|
| Voltar ao topo | |
 |
njfane
Joined: 27 out 2004 Lugares: 15
| 26 ago 2005 11:00 Re: Função Ponteiros em C | | |
|
| é uma boa escolha para substituir switch caso em um estado máquina utilizando função ponteiro, Nos casos em que estado máquina tem demasiados casos interruptor. torna programa mais compacto. |
|
| Voltar ao topo | |
 |
Bingo600
Joined: 26 ago 2004 Lugares: 239 Ajudado: 14
| 27 ago 2005 14:35 Função Ponteiros em C | | |
|
| Este é um bom documento sobre o assunto
http://www.newty.de/fpt/zip/e_fpt.pdf
http://www.newty.de/fpt/index.html
/ Bingo |
|
| Voltar ao topo | |
 |
btbass
Joined: 20 jul 2001 Posts: 1137 Ajudado: 106 Localização: Oberon
| 10 Sep 2005 15:21 Re: Função Ponteiros em C | | |
|
| Função ponteiros são muito úteis em sistemas embebidos. Como mudar uma declaração simplificada. Também é muito útil no menu sistemas. Se o item do menu seleccionado é o índice de um functon ponteiro array.
Por exemplo, cada estado aqui função retorna o estado para mudar para o próximo. O código para controlar um programa inteiro em uma linha!
| Código: | /*--- Estado máquina funções. ---*/
UI_16 espera (void); UI_16 iniciar (void); UI_16 executando (void);
/*--- State Machine. ---*/
enum (STANDBY = 0, INICIADORAS, RUNNING);
/************************************************* ******************** * Função Nome: main * Descrição: Programa entrada ponto. Inicializar array de constante função ponteiros. Inicializar a máquina estatal espera. Executa estado máquina.
************************************************** *******************/
SI_16 main (void) ( UI_16 (* const Motor_State []) (void) = (repouso, iniciando, executando); UI_16 Estado = STANDBY;
para (;;){ Estado = Motor_State [Estado] (); / * chamada estado função * / ) )
/*--- Fim do arquivo. ---*/
|
|
|
| Voltar ao topo | |
 |
Google AdSense

| 10 Sep 2005 15:21 Anúncios | | |
|
|
|
|
| Voltar ao topo | |
 |
raj_rohit10
Joined: 14 jul 2004 Lugares: 113 Ajudado: 1
| 13 Sep 2005 7:19 Re: Função Ponteiros em C | | |
|
| Olá o melhor uso da função ponteiro o que eu sinto é o implimentation do FSM e, como é dito erlier 2o uma função é chamada de volta. |
|
| Voltar ao topo | |
 |
abhishek_elec
Joined: 09 Set 2005 Lugares: 15 Ajudado: 1 Localização: Índia
| 13 Sep 2005 12:42 Re: Função Ponteiros em C | | |
|
| Função ponteiros são úteis quando u tem um processo ou algo generalizado e u querer usar este procedimento em diferentes tipos de dados.
Por ex., Se u tem uma boa triagem algo, e u quiser usar mesmo algo em números, por ordem alfabética, cordas ou quaisquer dados regida por alguns triagem regra. Nesse caso, e apenas têm de escrever um diferente "comparar" função de cada tipo de dados e nos principais triagem algo, e vai passar o ponteiro função como um argumento. Desta forma, o mesmo pode ser utilizado por algo diferente ppl de acordo com sua necessidade. Nenhuma modificação é necessária no corpo principal de algo. |
|
| Voltar ao topo | |
 |
Yaseen
Joined: 22 jan 2006 Posts: 9 Ajudado: 1
| 27 ago 2006 9:33 Re: Função Ponteiros em C | | |
|
| Eu tenho usado a função currenlty ponteiros no meu projecto C, que é o menu impulsionado editor. O objectivo destas indicações está a escrever uma eficiente, compacto e rápido código. Meu código saple está aqui;
int valor [] = (0x1F00, / / Alt S (^ Instalação) 0x1400, / / Alt T (^ Baús) 0x1200, / / Alt E (^ Extensions) 0x1800, / / Alt O (^ Operador) 0x2600, / / Alt L (^ Logging) 0x1900, / / Alt P (^ Senhas) 0x2200, / / Alt G (^ Settin gs) 0x2300 / / Alt H (^ Ajuda) );
/ / ------ Ponteiros para funções --------------------------------- void (* Execute [8 ])();// Menu Principal funções void (* Instalação [3 ])();// Menu Item funções void (* Baús [9 ])(); void (* Extensões [4 ])(); void (* Operador [3 ])(); void (* Log [2 ])(); void (* Senhas [3 ])(); void (* Definições [6 ])(); void (* Ajuda [10 ])(); //------------------------------------------------ ---------------
main () ( .... / / Initialize funtion ponteiros Execute [0] = ProcessSetup; Execute [1] = ProcessTrunks; Execute [2] = ProcessExtensions; Execute [3] = ProcessOperator; Execute [4] = ProcessLogging; Execute [5] = ProcessPasswords; Execute [6] = ProcessSettings; Execute [7] = ProcessHelp; ......
/ / Ler o teclado ... i = bioskey (1); se (i) / / Se teclado pronto ... key = bioskey (0); diferente continuar; / / Se teclado não está pronta, em seguida, continuar assistindo
/ / Executar o menu selecionado pelo usuário for (j = 0; j <8; j ) ( if (tecla == valor [j]) ( if (! inProcess) ( inProcess = 1; Execute [j] (); ) ) else if (tecla == 0x2D00) / / Alt X pressionado ... ou seja Sair retorno; ) .......... |
|
| Voltar ao topo | |
 |