In C language const
objects have external linkage by default (as opposed to C++ where they have internal linkage by default). So, in your code you created multiple definitions of an object DEFAULT_DSM_CONFIG
with external linkage - a clear violation of definition rules of C language.
Either declare your object as static const
(if you don't mind having multiple objects with internal linkage) or remove the definition from the header file (leave only a non-defining extern const
declaration there).
Anyway, the question has been asked many times before. See constant variables not working in header or do a search.