From: Warren Young Date: December 18 2007 6:15pm Subject: Re: Linking errors after moving to SSQLSs, macro problem List-Archive: http://lists.mysql.com/plusplus/7278 Message-Id: <47680E3D.5070602@etr-usa.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Simon Pickles wrote: > > I need to store types defined by the macros as class members. This is little different than before. Here's your code back, with the #defines in the right places. Comments with *** in them on each line I added, or marking interesting things. There are only 3: // FILE main.cpp /////////////////////////////////////// #define MYSQLPP_SSQLS_NO_STATICS // *** main.cpp doesn't own it #include "ClassWithSSQLS.h" int main() { ClassWithSSQLS c; return 0; } // FILE ssqls.h ////////////////////////////////////////// #ifndef SSQLS_H #define SSQLS_H #include #include sql_create_2( macro, 1, 0, unsigned int, id, unsigned int, key ) #endif // FILE ClassWithSSQLS.h //////////////////////////////////////////// #ifndef CLASSWITHSSQLS_H #define CLASSWITHSSQLS_H #define MYSQLPP_SSQLS_NO_STATICS // *** ditto ClassWithSSQLS.h // H IS NOT OWNER BUT NEEDS TO HAVE macro IN SCOPE SO.... #include "ssqls.h" // << THIS LINE SPOILS THE PARTY :( class ClassWithSSQLS { public: ClassWithSSQLS(); macro macro_; }; #endif // FILE ClassWithSSQLS.cpp ////////////////////////////////////////// // *** No #define here, because ClassWithSSQLS.cpp *does* own it // THE CPP IS THE OWNER! #include "ClassWithSSQLS.h" ClassWithSSQLS::ClassWithSSQLS() { macro m; } One .cpp file as owner. That's all.