[Click] Compile error using ELEMENT_PROVIDES

Eddie Kohler kohler at cs.ucla.edu
Fri Mar 27 20:08:26 EDT 2009


Xiaojun your class is not an element since it does not inherit from "class 
Element", and your .cc file does not #include <click/config.h>

E


Xiaojun Feng wrote:
> I am using an open source click element and it works very well.
> 
> Now I want to add a new member variable to the elememt.
> 
> I define a new class in the file packetsrc.hh:
> 
> #ifndef PACKETSRC_HH
> #define PACKETSRC_HH
> 
> CLICK_DECLS
> 
> class PacketSrc {        // line 6
>     public:
>         bool addPacket(char* data);
> 
>         PacketSrc();
>         ~PacketSrc();
> 
>     private:
>         char* packetdata;
> 
> };
> 
> CLICK_ENDDECLS  // line 18
> 
> #endif //PACKETSRC_H
> 
> and the implementation in packetsrc.cc:
> 
> #include "packetsrc.hh"
> 
> CLICK_DECLS
> 
> PacketSrc::PacketSrc() {}
> PacketSrc::~PacketSrc() {}  // line 6
> 
> bool PacketSrc::addPacket(char* data)  // line 8
> {
>     return false;
> }
> 
> CLICK_ENDDECLS  // line 13
> ELEMENT_PROVIDES(PacketSrc)
> 
> Then I use make elemlist to update the element.conf.
> But after 'make', there are several errors:
> 
>   CXX ../elements/local/packetsrc.cc
> In file included from ../elements/local/packetsrc.cc:1:
> ../elements/local/packetsrc.hh:6: error: expected constructor, destructor,
> or type conversion before ‘class’
> ../elements/local/packetsrc.hh:18: error: ‘CLICK_ENDDECLS’ does not name a
> type
> ../elements/local/packetsrc.cc:6: error: expected constructor, destructor,
> or type conversion before ‘::’ token
> ../elements/local/packetsrc.cc:8: error: ‘PacketSrc’ has not been declared
> ../elements/local/packetsrc.cc:8: warning: unused parameter ‘data’
> ../elements/local/packetsrc.cc:13: error: ‘CLICK_ENDDECLS’ does not name a
> type
> make[1]: *** [packetsrc.o] Error 1
> make[1]: Leaving directory
> `/media/work/fightfxj/thesis/linux_program/click-1.6.0/userlevel'
> make: *** [userlevel] Error 2
> 
> How does the first error happen? Did I do anything wrong to define the class
> PacketSrc?
> I am just beginning to learn Click, maybe the question is kind of naive.
> 
> So every comment will be helpful to me.
> Thanks very much!
> 



More information about the click mailing list