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

    [C] Definizione Struct: aiuto

    Buongiorno a tutti!
    Mi trovo davanti questa porzione di codice:

    struct spi_driver {

    int (*probe) (struct spi_device *spi);
    int (*remove) (struct spi_device *spi);
    .
    .
    .
    .
    .
    }

    Trascurando i nomi, qualcuno sa spiegarmi come intendere queste definizioni all'interno dello struct? Cosa sono?
    Grazie!

  2. #2
    Sono due puntatori a funzione, che restituiscono un intero e prendono un puntatore a spi_device in input.
    To understand recursion, we must first understand recursion

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481

    Re: [C] Definizione Struct: aiuto

    Originariamente inviato da nutello84
    Buongiorno a tutti!
    Mi trovo davanti questa porzione di codice:

    struct spi_driver {

    int (*probe) (struct spi_device *spi);
    int (*remove) (struct spi_device *spi);
    .
    .
    .
    .
    .
    }

    Trascurando i nomi, qualcuno sa spiegarmi come intendere queste definizioni all'interno dello struct? Cosa sono?
    Grazie!
    Probabilmente devi ancora studiarli i puntatori a funzione ... ecco perche' ti sembrano strani ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Sia detto tra noi, la sintassi dei puntatori a funzione è veramente odiosa anche per chi ci è abituato...
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Originariamente inviato da MItaly
    Sia detto tra noi, la sintassi dei puntatori a funzione è veramente odiosa anche per chi ci è abituato...
    Concordo ... e aggiungo che, oltre certi livelli, mi sembra anche "misteriosa" ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    A tal proposito cito la seguente:
    codice:
    $ man signal
         #include <signal.h>
    
         void (*
         signal(int sig, void (*func)(int)))(int);
    
         or in the equivalent but easier to read typedef'd version:
    
         typedef void (*sig_t) (int);
    
         sig_t
         signal(int sig, sig_t func);
    da cui s'evince che l'uso dei typedef per definire puntatori a funzioni, rende il tutto molto piu' leggibile.

  7. #7
    Infatti... codice scritto giusto ieri:
    codice:
            typedef const char * (*strerrorFunc)(int ErrorNumber);
            typedef int (*strerror_rXSIFunc)(int ErrorNumber, char * Buffer, size_t BufferLength);
            typedef const char * (*strerror_rGNUFunc)(int ErrorNumber, char * Buffer, size_t BufferLength);
            //...
            static std::string composeMessage(const std::string & Message, int ErrorNumber, strerror_rXSIFunc TranslatingFunction);
            static std::string composeMessage(const std::string & Message, int ErrorNumber, strerror_rGNUFunc TranslatingFunction);
            static std::string composeMessage(const std::string & Message, int ErrorNumber, strerrorFunc TranslatingFunction);
    Chi non typedefizza i puntatori a funzione nel proprio codice peste lo colga.
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.