SystemC

Bonjour,
J'ai un souci lors de la compilation de mon programme en systemC: l'erreur est : error C2039: 'entre' : n'est pas membre de 'bascd' sachant que j'ai tout déclaré (entre est un signal d'entrée d'un module bascd)...je vois pas du tout l'erreur...quelqu'un pourra m'aider et merci d'avance
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Désolé, je ne connais pas les n° d'erreurs du compilateur.
    Tu peux toujours essayer de faire une recherche sur la toile.
    Si tu veux qu'on t'aide, il faut au moins un bout de code (en utilisant les balises 'code' (à droite de souligné)), voire le code en entier s'il n'est pas trop long et surtout les premières lignes d'insultes du compilateur.
    A suivre.
    1. Le voilà mon code, il apparait long mais pas du tout je t'ai filé tous les fichiers .h et .cpp, il est tout bete je veux juste décaler un vecteur de 4 bits afin de récupérer tous les bits un par un(j'aurai besoin pour un programme plus compliqué...)
      bascd.h
      #ifndef __bascd_h
      #define __bascd_h
      #include "systemc.h"
      SC_MODULE(bascd)
      {
      sc_in<sc_bv<4> > en;
      sc_in<bool> clock;
      sc_out<sc_bv<4> > titi;
      sc_bv<4> to;

      void doit();
      SC_CTOR(bascd)
      {to=en.read();
      SC_METHOD(doit);
      sensitive_pos<<clock;
      }
      };
      #endif

      bascd.cpp
      #include "bascd.h"

      void bascd::doit()
      {
      //dout = din;
      to.range(3,1)=to.range(2,0);
      titi=to;
      }
      gene_sig.h
      #ifndef __gene_sig_h
      #define __gene_sig_h

      #include "systemc.h"
      SC_MODULE(gene_sig)
      { sc_out<sc_bv<4>> entre;
      //sc_out<sc_bit> dout;
      void gene();
      SC_CTOR(gene_sig)
      {
      SC_THREAD(gene);
      }
      };
      #endif
      gene_sig.cpp
      #include "gene_sig.h"

      void gene_sig::gene(){
      while(1) {
      entre = "0000";
      wait(5,SC_NS);
      entre = "0101";
      wait(25,SC_NS);
      wait();
      }
      }

      main.cpp
      #include "bascd.h"
      #include "gene_sig.h"
      int sc_main(int argc, char* argv[]) {

      sc_signal<sc_bv<4>> data1;
      sc_signal<sc_bv<4>> tata;

      const sc_time periode(10,SC_NS);
      sc_clock clk("clk",periode);

      gene_sig g1("g1");
      g1.entre(data1);

      bascd d1("d1");
      d1.clock(clk);
      d1.en(data1);
      d1.titi(tata);

      // trace file creation
      sc_trace_file *tf = sc_create_vcd_trace_file("SystemC");
      // External Signals
      sc_trace(tf, clk.signal(), "clk");
      sc_trace(tf, data1, "data1");
      sc_trace(tf, tata, "tata");
      sc_start(100,SC_NS);
      sc_close_vcd_trace_file(tf);
      return(0);
      }
      les insultes du compilateur sont les suivants:
      1>c:\mes documents\visual studio 2005\projects\essai_systemc\essai_systemc\main.cpp(22) : error C2039: 'en' : n'est pas membre de 'bascd'
      1> c:\\mes documents\visual studio 2005\projects\essai_systemc\essai_systemc\bascd.h(3) : voir la déclaration de 'bascd'
      1>c:\mes documents\visual studio 2005\projects\essai_systemc\essai_systemc\main.cpp(23) : error C2039: 'titi' : n'est pas membre de 'bascd'
      1>c:\mes documents\visual studio 2005\projects\essai_systemc\essai_systemc\bascd.h(3) : voir la déclaration de 'bascd'
      et merci beaucoup...j'ai vraiment besoin d'aide...
    2. @galexieBen le compilateur est clair: dans le fichier 'bascd.h' lorsqu'il est appellé par 'main', il ne sait pas ce qu'est 'en' et 'titi'; moi non plus car 'en' et 'titi' ne sont pas définis dans ce fichier.
  2. Mais ils sont déjà déclarés dans le fichier bascd.h :
    sc_in<sc_bv<4> > en;
    sc_out<sc_bv<4> > titi;
    1. Qu'y-a-t-il dans systemc.h qui le fasse tiquer ?
    2. @loupiusJe ne comprends pas ta question et moi non plus je comprends pas le souci, c'est vraiment très suspect et je ne vois pas du tout quoi faire sinon!!!!!!!
    3. @galaxieJe ne comprends pas ce qu'est systemc.h.
      Qu'est ce qu'est: int sc_main(int argc, char* argv[]) ? Je ne vois pas d'où vient ce tour de passe-passe.
      Désolé, mais il faut que tu trouves quelqu'un de plus affuté que moi sur ce sujet.
      Bonne chance.