Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    97

    Funzioni e parametri

    Ciao a tutti,
    stavo cercando di capire un programma scritto da altre persone, ma sono veramente anni luce distante dalle conoscenze di chi lo ha scritto.
    Il primo dubbio che ho riguarda il parametro passato ad una funzione.

    questo e` il prototipo della funzione in oggetto:
    codice:
    static UINT AFX_CDECL ShutDownThread( LPVOID lpParam );
    A parte che non so il significato di AFX_CDECL , ho notato che tale funzione richiede il parametro di tipo LPVOID
    Ora vi mostro l` inizio della definizione di tale finzione:
    codice:
    UINT AFX_CDECL CShutDWNDlg::ShutDownThread( LPVOID lpParam )
    {
    	CShutDWNDlg *pDlg = (CShutDWNDlg*)lpParam;
    	char pName[ 128 ] = { 0 };
    	char pPasswd[ 128 ] = { 0 };
    	char pDomain[ 128 ] = { 0 };
                             .......
    lpParam e` il nostro parametro passato dalla funzione e tramite casting viene utilizzato per inizializzare il puntatore a classe CShutDWNDlg pDlg.

    Il dubbio piu` grande e` nella chiamata di tale funzione
    codice:
     m_pThread = AfxBeginThread( ShutDownThread, this );
    Tale funzione e` a sua volta un parametro di AfxBeginThread()
    Avevamo detto che ShutDownThread si aspettava un parametro tipo LPVOID, ma qui non viene passato.
    Come mai ??
    Coem fa a funzionare tale funzione ??
    Grazie in anticipo a tutti coloro che mi daranno qualche regguaglio.
    Ciao
    Sergio

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non mi sembra ci siano problemi.

    Il primo parametro della AfxBeginThread e' un puntatore ad una funzione. E il puntatore ad una funzione, a prescindere dai suoi parametri, e' rappresentato sempre e solo il suo nome.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    97
    Ciao,
    hai proprio ragione. ( che pivello che sono...).

    Ne aprofitto della tua disponibilita` per una seconda domanda:

    nel prototipo di funzione
    static UINT AFX_CDECL ShutDownThread( LPVOID lpParam );
    che significa AFX_CDECL ?

    Ciao e grazie
    Sergio

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E' un modo equivalente alla scrittura

    __cdecl

    che indica solo che la funzione deve seguire lo standard di chiamata C (a differenza dello standard di chiamata PASCAL).

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    97
    ri-grazie....
    ma quante cose che non so.... ;-)

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