• # ABI C definie sur l'OS.

    Posté par . En réponse au message Gcc, les symboles, les underscores, et windows. Évalué à 3.

    Sous Win32 l'ABI C impose de prefixer tout symbole par un underscore lorsque celui ci utilise la convention d'appel C standard.

    De meme les symboles utilisant la convention stdcall (toute l'api win32 par ex), ne prefixe pas, mais ajoute un suffixe @${n} ou n est la taille totale prise par les arguments sur la pile si je me souviens bien.

    Sous GNU/Linux, l'ABI C suivie n'est pas la meme.

    Voila la raison :-)

    En general, la solution consiste à avoir une macro:
    #if defined ( _WIN32)
    SYMBOL_NAME(symbol_name) _##symbol_name
    #else if defined (__linux__)
    SYMBOL_NAME(symbol_name) ##symbol_name
    #else
    #error SYMBOL_NAME not defined !!!
    #endif

    Je te laisse en exercise le soin de corriger les erreurs eventuelle de cette macro non testée.