1

I'm using mthreads (https://github.com/jlamothe/mthread) for my arduino. But now as the project is getting bigger, it would make sense to break it up in several files.

I successfully outsourced already a part which is not threaded. But somehow I cannot make up my mind how to use mthread in conjunction with several header files.

here is what I got:

main: call header:

#include "tcan.h"

tcan.h:

#ifndef tcan_h
#define tcan_h
#include "Arduino.h"
class tcan : public Thread {
 public: tcan();
 protected: bool loop();
 private:
};
#endif

tcan.cpp

#include "Arduino.h"
#include "tcan.h"
#include <mcp_can.h>
bool tcan::loop() {
 // lala
 return true;
}

but I get an error when compiling:

tcan.h:6:28: error: expected class-name before '{' token class tcan : public Thread {

Thanks in advance

asked Jan 27, 2016 at 7:16
1
  • Check for circular #includes... The error can be caused by including Arduino.h twice. Commented Jan 27, 2016 at 7:46

1 Answer 1

1

The compiler error is due to that the compiler does not know what Thread is.

tcan.h:6:28: error: expected class-name before '{' token class tcan : public Thread {

The issue is that the header file is not complete. A good practice is to include all header files that are needed to read the header file. As Thread is defined in mthread.h the tcan.h file should be:

#ifndef tcan_h
#define tcan_h
#include <mthread.h>
class tcan : public Thread {
public: tcan();
protected: bool loop();
private:
};
#endif

Cheers!

answered Jan 27, 2016 at 8:48
2
  • that was the right hint "Assuming that Thread is defined in mcp_can.h". Of course I need to include "<mthread.h>". Thanks for the hint! It's working now. Commented Jan 27, 2016 at 8:53
  • Great! I will update the answer with the correct include. Commented Jan 27, 2016 at 9:14

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.