Hi,
I'm having trouble using a very simple template expansion using the HCS12 complier (latest version) Here is the code of what is not working:
Code:
#include <hidef.h> /* common defines and macros */#include <mc9s12xdt512.h> /* derivative information */#pragma LINK_INFO DERIVATIVE "mc9s12xdt512"class stackBase{public: stackBase(int size, byte *start) : bottom(start), top(start+size) { }; void Push(byte a) { *--top = a; } byte Pop() { return *top++; }private: byte *bottom; byte *top;};template <int StackSize>class Stack : public stackBase{public: Stack() : stackBase(StackSize, stackBytes) { };private: byte stackBytes[StackSize];}; Stack<100> fred;Stack<101> sally; void main(void) { /* put your own code here */ fred.Push(1); sally.Push(2); for(;;) {} /* wait forever */ /* please make sure that you never leave this function */}
What happens is that I first get a warning in the template (C3603: Static 'Stack' was not defined.)
Then, I have a link error (L1822: Symbol __ct__8Stack100Fv.4 in file ...)
I think that the code is fine. If I make fred and sally both the same size, it works fine. It seems that it can't expand 2 versions of the same template.
Is this a bug?
Cheers,
-Jay