Compiler Error L6218E
- Incorrect Types in function headers. For example:
void foo(unsigned char * foo1); void foo(char*foo1){};
- Or not initializing a static member of a class, e.g.:
class Foo { public: static int bar; static void isr(); }; void Foo::isr() { bar++; } // WILL FAIL WITHOUT THIS INITIALIZATION: int Foo::bar = 0; int main() { while (1) ; }
- Or failure to define a virtual function in a class that is instantiated, or has child classes that are instantiated.
- The linker may display the errors "Undefined symbol typeinfo for Example" or "Undefined symbol vtable for Example."
- This shouldn't apply to abstract virtual functions, although mbed currently doesn't allow abstract virtual functions or abstract classes.
#include "mbed.h" #include "example-class.h" class Example { public: virtual int func1(); }; //class Example is instantiated, generating a linker error //"Undefined symbol vtable for Example" Example foo; int main() { while(1) { //code... } } //defining the virtual function fixes the linker error /* int Example::func1() { return 0; } */