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

Langage Perl Discussion :

Perl - C : Passer des args a une fonction C


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Perl - C : Passer des args a une fonction C
    Bonjour tout le monde et merci de me lire

    Je dois faire un programme embarquant du PERL, et le perl doit lui meme faire appel a des fonctions C...
    J'ai reussi a faire ce que je souhaitais pour le cote C, mais je n'arrive a rien lorsque je dois appeller une fonction C avec le perl.

    J'ai fait les demarches adequates pour ma fonction dans la partie C (je ne m'etend pas, c'est un forum PERL ici ^_^. Ca comprendre le xs_init et le newXS).

    Ma partie C est sensee reprendre les arguments depuis le stack, mais je ne sais pas comment les passer du PERL a la stack, ces fameux arguments... quelqu'un aurait il une petite idee ?

    Merci d'avance et bonne journee a tous

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Lorsque tu fais l'appel d'une fonction dont les arguments dans le XS sont '...', les arguments sont placés sur la Stacks, ensuite il suffit d'utiliser les Macro ST(n) pour en faire usage (la variable items contient le nombre d'éléments).

    --
    Jedaï

  3. #3
    Invité
    Invité(e)
    Par défaut
    Hum, j'ai bien utilisé la macro ST dans ma fonction C pour récupérer les données, mais c'est l'envoie de cette dernière depuis PERL qui me pose problème...
    Comment devrais-je transmettre le int (dans mon cas) que le PERL possède, à cette fonction C ?

    Exemple :

    C_func($a); ?

    Ou y a t il une autre macro PERL du même domaine que ST pour pusher une valeur dans la stack, et que ma fonction C puisse récupérer?

  4. #4
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Non, bien sûr tout est passé dans la stack par défaut. Lorsque tu mets des arguments à tes fonctions XS, tu ne fais que mettre en place des manipulations de la pile et des affectations cachées.

    --
    Jedaï

  5. #5
    Invité
    Invité(e)
    Par défaut
    Erf en realite je suis un boulet, j'avais fait une erreur dans mon code C qui faisait que je recuperais n'importe quoi -_-
    Merci pour ton aide Jedai

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

Discussions similaires

  1. passer des data a une fonction en cours d'execution
    Par benooo dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 18/06/2011, 11h17
  2. [Perl/Tk] problème pour faire passer des variables vers une fonction
    Par seben dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 09/03/2009, 15h17
  3. Passer des variables dans une fonction
    Par Herlece dans le forum PL/SQL
    Réponses: 11
    Dernier message: 11/07/2008, 14h18
  4. Réponses: 2
    Dernier message: 28/04/2008, 20h04
  5. Réponses: 3
    Dernier message: 16/05/2007, 10h03

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