IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Signature d'une fonction sans argument


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Signature d'une fonction sans argument
    Bonjour,

    La compilation (borland c++ 5.5) ne passe pas pour une fonction signée comme cela (fichier c ou c++) :

    void ma_fonction(void param)

    bien sur cela marche si on fait

    void ma_fonction(void)

    malheureusement je ne peux pas modifier la fonction (livrée par quelqu'un d'autre.)

    quelqu'un a t'il des infos à ce sujet. s'agit t'il d'un bug ? comment faire ?

    Merci de votre aide

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    void n'est pas un type valide pour déclarer une variable ou un paramètre. Le prorotype que tu nous as donné n'a pas de sens, il faut écrire "void ma_fonction()", ou encore (une relique du C) "void ma_fonction(void)".

    Tu es sûr que ce n'était pas plutôt "void* param" :

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Effectivement c'est plutôt void* param (au temps pour moi...)

    voici la fonction :

    oresult GetFieldValue(int index, void __huge *longval, long len, long *readlen) const;

    alors je te dis ce qui se passe :

    j'ai le .h qui s'appelle oracl.h (librairie oracle pour OLE) dans lequel se trouve la déclaration ci-dessus

    je fais simplement dans mon .cpp

    #include "oracl.h"

    si je compil seulement (sans link) j'ai l'erreur "value of type void is not allowed" sur (cette fonction)

    par contre si je fais dans mon .cpp

    #include <windows.h>
    #include "oracl.h"

    je n'ai plus d'erreur. mais je ne comprend pas car dans mon oracl.h j'ai déjà un include du windows.h ?

    y'a quelque chose qui m'échappe.

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Mon hypothèse à trois sous : __huge doit être défini dans windows.h (ce qui explique que cela résolve l'erreur), et peut-être y a t-il certains tests préprocesseurs dans oracl.h, empêchant windows.h de s'inclure même si tu vois un "#include <windows.h>".

    M'enfin si ça marche... C'est déjà le plus important

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Par contre , si je compile sous visual C++ , j'ai aucun souci !

    Merci et à bientôt

  6. #6
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 704
    Points
    10 704
    Billets dans le blog
    3
    Par défaut
    Quelle version de VC++ ?
    __huge, ça sent le relicat de l'époque 16 bits. A mon avis tu peur le virer, sauf si tu compiles pour DOS.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel sans arguement d'une fonction avec argument
    Par debutant100 dans le forum Général Python
    Réponses: 2
    Dernier message: 03/04/2011, 13h04
  2. Appeler juste une fonction sans include
    Par laurent_ifips dans le forum Langage
    Réponses: 5
    Dernier message: 22/11/2005, 23h08
  3. creer une fonction avec arguments
    Par niglo dans le forum ASP
    Réponses: 3
    Dernier message: 03/06/2005, 08h04
  4. Création d'une fonction sans paramètre?
    Par falcon dans le forum Oracle
    Réponses: 3
    Dernier message: 13/12/2004, 11h32
  5. Passer une fonction comme argument à une fonction
    Par Cocotier974 dans le forum Général Python
    Réponses: 4
    Dernier message: 29/06/2004, 13h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo