Every SSQLS type includes two static member variables; _table is one. If you don't do anything to avoid it, they're assigned default values within the sql_create_* macro, so if the compiler sees that macro call twice, it sees two separate assignments to a static member variable, which annoys it.

To fix this, I would put the sql_create_* macro in a separate .h file, and #define MYSQLPP_SSQLS_NO_STATICS above all #includes for that file except for one. This ensures that the static members are assigned to only once. You can see this pattern in action in the examples: the 'stock' SSQLS type is defined in stock.h, and it is included in both util.cpp and in custom*.cpp.