I sometimes declare a static field in a header, but fail to define it (i.e. give it storage). It compiles fine and may even link successfully. When you run the executable, you may hit
error loading library /home/nysemkt_integrated_parser.so: undefined symbol: _ZN14arcabookparser6Parser19m_srcDescriptionTknE
Note this is a shared library.
Note the field name is mangled. You can un-mangle it using c++filt:
c++filt _ZN14arcabookparser6Parser19m_srcDescriptionTknE arcabookparser::Parser::m_srcDescriptionTkn
According to Deepak, the binary files only has mangled names. The linker and all subsequent programs deal exclusively with mangled names.
If you don’t use this field, the undefined variable actually will not bother you! I think the compiler just ignores it.