Check the below C++ code:
in file S.h, we define class S
class S { public: S(char *name); void init(); };
in file S.cpp, we implement S constructor and function init()
#include "S.h" #include "stdio.h" S::S(char *name) { printf("S constructor\n"); } void S::init() { printf("S init\n"); }
in file test.cpp we first declare a global variable m_s, and then call init()
#include "S.h" S m_s("test"); void test() { m_s.init(); }
If we run the program under ncs 2.1.0 (i.e. call test() from main()), the constructor never run, while init() executes as expected.
We cannot even put a breakpoint in the constructor code, it is like the linker totaly ignored it.
The same code works fine in SES / SDK15.2 and other compilers.
Any ideas?
Thanks