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

    modificatori funzione?mah!

    Salve gente,

    ogni tanto mi piace guardare i sorgenti dei vari progetti opensource e ho notato spesso una dicitura del genere:

    typedef int __FASTCALL__ (*funzione)(param1,param2....);

    Il mio problema è: quel __FASTCALL__ (ma ce ne sono altre...) che roba è? a occhio e croce sembrerebbe qualche direttiva/istruzione per il compilatore,ma se cosi fosse:

    A)Sono operazioni consentite dallo standard ANSI C? Ne minano la portabilità?
    B)Fondamentalmente a che servono? in che misura influiscono?
    C)Quante ce ne sono? Sono elencate da qualche parte?

    Grazie!

  2. #2
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Sono dei modificatori che danno informazioni sul comportamento della funzione.
    Se non erro NON sono Ansi C ma sono Microsoft Specifics (ma anche Borland dovrebbe averli).
    Ce ne sono 3:

    The __fastcall calling convention specifies that arguments to functions are to be passed in registers, when possible.
    Informazioni precise sul comportamento


    __cdecl is the default calling convention for C and C++ programs. Because the stack is cleaned up by the caller, it can do vararg functions. The __cdecl calling convention creates larger executables than __stdcall, because it requires each function call to include stack cleanup code. The following list shows the implementation of this calling convention.
    Informazioni precise sul comportamento

    The __stdcall calling convention is used to call Win32 API functions. The callee cleans the stack, so the compiler makes vararg functions __cdecl. Functions that use this calling convention require a function prototype.
    Informazioni precise sul comportamento

    Nei link dice se cambia nome alla variabile, se gli argomenti son passati per riferimento o valore...controlla
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: modificatori funzione?mah!

    Originariamente inviato da unbreakable9
    Il mio problema è: quel __FASTCALL__ (ma ce ne sono altre...) che roba è?
    Vista come è scritta, tutta maiuscola e con attorno doppi underscore, è sicuramente una macro. Macro che molto probabilmente si "espande" in una direttiva specifica del compilatore, come ad esempio __fastcall di certi compilatori. Se con un certo compilatore non fosse disponibile una direttiva del genere, si può fare facilmente in modo che la macro sia "vuota" (o contenga magari un'altra direttiva in sostituzione).
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

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.