Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C] Passare una funzione (a più parametri) come parametro ad un'altra funzione

    Ciao a tutti,
    sono nuovo e non sono un programmatore. Ho un problema che riguarda la sintassi.
    Devo passare una funzione a più parametri ad una funzione che in ingresso richiede una funzione di un solo parametro, ma non so come fare.
    Mi spiego meglio: nel mio programma principale calcolo i parametri (tutti array di double) a,b,c della funzione double f(a,b,c,x), dove anche x è un array di double; poi devo passare alla funzione void g(p, double(*h)(double[]),...), che calcola l'array x, la funzione f, come funzione di un solo parametro.
    Se f fosse già funzione di un solo parametro, ad esempio f(x) mi basterebbe scrivere
    g(p, f,...);
    Ma come faccio in questo caso? Vi dico subito che non posso passare a g i vettory a,b,c perchè è una routine presa da un libro...potrei pensare di modificarla, ma prima di farlo preferisco chiedere aiuto a voi. Spero di essere stato chiaro.
    Per la cronaca, g è una routine per minimizzare la funzione in ingresso rispetto ai parametri contenuti in x.
    Grazie per le risposte, ciao!

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Dovrebbe essere sufficiente un cast (Windows utilizza un sistema simile per le DLL caricate dinamicamente).
    codice:
    typedef double (*DOUBLE_PROC) (double[]);
    
    typedef double (*MY_FUNCTION)( parametri vari)
    
    g(p,(DOUBLE_PROC)f,...);
    
    nella funzione g
    
    void g(quel che è, DOUBLE_PROC f, ...) {
        MY_FUNCTION myfunction = (MY_FUNCTION) f;
    
        (*myfunction)(parametri);
    
    }
    Questo in linea di principio. Ma se non mostri i prototipi esatte delle funzioni in gioco, non si può dire molto di più.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.