Re: [sqlite] "struct Mem" conflicts with namespaces/classes having the same name
ok, but then namespace ns1 { extern "C" int ert(void) { return 9; } }; namespace ns2 { extern "C" int ert(void); }; are both the same function ! it would be simpler in the sqlite case to define Mem to something else before include, and then undef it instead of playing with namespace 2017-04-10 10:43 GMT-04:00 Olivier Mascia: > > Le 10 avr. 2017 à 16:21, Daniel Anderson a écrit : > > > > as Sqlite is already within extern "C" > > > > I'm wondering how your namespace trick can work ? > > > Both are simply unrelated. > extern "C" is a linkage specification. > Not a namespace declaration. > > -- > Best Regards, Meilleures salutations, Met vriendelijke groeten, > Olivier Mascia, http://integral.software > > > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > -- Daniel *L'action accède à la perfection quand, bien que vivant, vous êtes déjà mort* *Bunan* ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] "struct Mem" conflicts with namespaces/classes having the same name
> Le 10 avr. 2017 à 16:21, Daniel Andersona écrit : > > as Sqlite is already within extern "C" > > I'm wondering how your namespace trick can work ? Both are simply unrelated. extern "C" is a linkage specification. Not a namespace declaration. -- Best Regards, Meilleures salutations, Met vriendelijke groeten, Olivier Mascia, http://integral.software ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] "struct Mem" conflicts with namespaces/classes having the same name
as Sqlite is already within extern "C" I'm wondering how your namespace trick can work ? 2017-04-10 9:41 GMT-04:00 Bob Friesenhahn: > On Mon, 10 Apr 2017, Olivier Mascia wrote: > >> >> This is where I do: >> >> #include "memory.h" >> namespace sqlite >> { >> #include "sqlite3.h" >> } >> >> And the conflict with your Mem goes away for the price of qualifying your >> references to SQLite symbols with 'sqlite::'. It fits me easily because we >> have our own slim C++ wrapper around SQLite C API, so these prefixed >> references are only slightly annoying (length of text) in the wrapper code. >> It might of course not fit you and having sqlite3.h not exposing that Mem >> in the public namespace is certainly the long term better solution for >> everyone. >> > > A way to get rid of the annoying 'sqlite::' prefix for plain C functions > is to import the functions actually planned to be used into global scope or > into the namespace of the using code: > > namespace MyNamespace > { > using sqlite:sqlite3_exec; > } > > Bob > -- > Bob Friesenhahn > bfrie...@simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/ > GraphicsMagick Maintainer,http://www.GraphicsMagick.org/ > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > -- Daniel *L'action accède à la perfection quand, bien que vivant, vous êtes déjà mort* *Bunan* ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] "struct Mem" conflicts with namespaces/classes having the same name
On Mon, 10 Apr 2017, Olivier Mascia wrote: This is where I do: #include "memory.h" namespace sqlite { #include "sqlite3.h" } And the conflict with your Mem goes away for the price of qualifying your references to SQLite symbols with 'sqlite::'. It fits me easily because we have our own slim C++ wrapper around SQLite C API, so these prefixed references are only slightly annoying (length of text) in the wrapper code. It might of course not fit you and having sqlite3.h not exposing that Mem in the public namespace is certainly the long term better solution for everyone. A way to get rid of the annoying 'sqlite::' prefix for plain C functions is to import the functions actually planned to be used into global scope or into the namespace of the using code: namespace MyNamespace { using sqlite:sqlite3_exec; } Bob -- Bob Friesenhahn bfrie...@simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/ GraphicsMagick Maintainer,http://www.GraphicsMagick.org/ ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] "struct Mem" conflicts with namespaces/classes having the same name
> Le 10 avr. 2017 à 11:11, dipa écrit : > > I am mixing C and C++ code. My code is in C++, SQLite is in C. > Just create memory.h: > > namespace Mem { > // some functions > } > > And create code.cpp: > > #include "memory.h" > #include "sqlite3.h" > > void Func() > { > Mem::SomeFunc(); // gives the compilation error > } This is where I do: #include "memory.h" namespace sqlite { #include "sqlite3.h" } And the conflict with your Mem goes away for the price of qualifying your references to SQLite symbols with 'sqlite::'. It fits me easily because we have our own slim C++ wrapper around SQLite C API, so these prefixed references are only slightly annoying (length of text) in the wrapper code. It might of course not fit you and having sqlite3.h not exposing that Mem in the public namespace is certainly the long term better solution for everyone. -- Best Regards, Meilleures salutations, Met vriendelijke groeten, Olivier Mascia, http://integral.software ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] "struct Mem" conflicts with namespaces/classes having the same name
Ah, understood. I thought you had a struct or a class named Mem. then short term solution is to rename Mem in sqlite.h using the #define directive + include file should do the trick. as they say solve it by using a level of indirection! It will be a bit ugly, but until a) sqlite change the name or b) you change the namespace name you'll be stuck with a hack! Cordialement! Daniel 2017-04-10 5:11 GMT-04:00 dip <x...@protonmail.com>: > I am mixing C and C++ code. My code is in C++, SQLite is in C. > Just create memory.h: > > namespace Mem { > // some functions > } > > And create code.cpp: > > #include "memory.h" > #include "sqlite3.h" > > void Func() > { > Mem::SomeFunc(); // gives the compilation error > } > > Sent with [ProtonMail](https://protonmail.com) Secure Email. > > ---- Original Message ---- > Subject: Re: [sqlite] "struct Mem" conflicts with namespaces/classes > having the same name > Local Time: April 10, 2017 2:29 AM > UTC Time: April 9, 2017 11:29 PM > From: woni...@gmail.com > To: SQLite mailing list <sqlite-users@mailinglists.sqlite.org> > > I see no problems with C++. > > Mem is only foward declared, you can redefined it to whatever you want. as > long as you do not redefined it for sqlite.c you should be good. > > in sqlite.h it's declared: > > struct Mem; > > so in your code if you do: > > struct Mem { int a;int b;} then your definition will be used for your code. > > as sqlite is only using pointer, and has his own definition, I do not see > the problem. > > it breaks the ODR, but as I previously said it's used/allocated internally > by sqlite which should never see your definition. > > can you explain in more detail what is happening ? > > can you make a small reproduceable sample ? > > also are you mixing C++ & C, or is your code all in c ? > > Daniel > > 2017-04-09 15:49 GMT-04:00 dip <x...@protonmail.com>: > > > sqlite3.c is C file. C does not support namespaces. > > Even though another project files are .cpp, sqlite3.c is still compiled > as > > C language source. > > Therefore, no ability to use "using namespace" in sqlite3.c. > > Also, "using namespace" does not actually put functions in the source in > > namespace. It just helps it find another functions without specifying > > namespace name. > > > > Sent with [ProtonMail](https://protonmail.com) Secure Email. > > > > Original Message > > Subject: Re: [sqlite] "struct Mem" conflicts with namespaces/classes > > having the same name > > Local Time: April 9, 2017 10:23 PM > > UTC Time: April 9, 2017 7:23 PM > > From: d3c...@gmail.com > > To: SQLite mailing list <sqlite-users@mailinglists.sqlite.org> > > > > On Sun, Apr 9, 2017 at 12:20 PM, Richard Damon <rich...@damon-family.org > > > > wrote: > > > > > On 4/9/17 1:49 PM, Olivier Mascia wrote: > > > > > >> Le 9 avr. 2017 à 18:49, dip <x...@protonmail.com> a écrit : > > >>> > > >>> I downloaded latest SQLite Amalgamation (v 3.18.0) to embed it in my > > >>> project. > > >>> After that I got a lot of errors while compiling (compiler is > Microsoft > > >>> Visual Studio 2017). > > >>> Errors were caused by the following line in sqlite3.h: > > >>> > > >>> typedef struct Mem sqlite3_value; > > >>> > > >>> The reason is that I have the namespace with the same name. > > >>> So I have a suggestion to rename "struct Mem" to something else (add > > >>> prefix to it) because "Mem" is a very common name like "input" or > > "data" or > > >>> "buffer" and there may be classes or namespaces having the same name. > > >>> > > >> The way to overcome this completely in large programmings using many > > >> libraries is to include sqlite3.h within a namespace. Not something > that > > >> SQLite code must do itself: that's best handled at the user project > > level. > > >> > > >> The problem with this is that if the header file is put in a namespace > > in > > > the user code, then the source file that defines these functions needs > to > > > also be changed to put the files in that same namespace, or the things > > > being defined won't be found. > > > > > > think that's what 'use namespace' is for > > > > > -- > > > Richard Damon >
Re: [sqlite] "struct Mem" conflicts with namespaces/classes having the same name
I am mixing C and C++ code. My code is in C++, SQLite is in C. Just create memory.h: namespace Mem { // some functions } And create code.cpp: #include "memory.h" #include "sqlite3.h" void Func() { Mem::SomeFunc(); // gives the compilation error } Sent with [ProtonMail](https://protonmail.com) Secure Email. Original Message ---- Subject: Re: [sqlite] "struct Mem" conflicts with namespaces/classes having the same name Local Time: April 10, 2017 2:29 AM UTC Time: April 9, 2017 11:29 PM From: woni...@gmail.com To: SQLite mailing list <sqlite-users@mailinglists.sqlite.org> I see no problems with C++. Mem is only foward declared, you can redefined it to whatever you want. as long as you do not redefined it for sqlite.c you should be good. in sqlite.h it's declared: struct Mem; so in your code if you do: struct Mem { int a;int b;} then your definition will be used for your code. as sqlite is only using pointer, and has his own definition, I do not see the problem. it breaks the ODR, but as I previously said it's used/allocated internally by sqlite which should never see your definition. can you explain in more detail what is happening ? can you make a small reproduceable sample ? also are you mixing C++ & C, or is your code all in c ? Daniel 2017-04-09 15:49 GMT-04:00 dip <x...@protonmail.com>: > sqlite3.c is C file. C does not support namespaces. > Even though another project files are .cpp, sqlite3.c is still compiled as > C language source. > Therefore, no ability to use "using namespace" in sqlite3.c. > Also, "using namespace" does not actually put functions in the source in > namespace. It just helps it find another functions without specifying > namespace name. > > Sent with [ProtonMail](https://protonmail.com) Secure Email. > > ---- Original Message ---- > Subject: Re: [sqlite] "struct Mem" conflicts with namespaces/classes > having the same name > Local Time: April 9, 2017 10:23 PM > UTC Time: April 9, 2017 7:23 PM > From: d3c...@gmail.com > To: SQLite mailing list <sqlite-users@mailinglists.sqlite.org> > > On Sun, Apr 9, 2017 at 12:20 PM, Richard Damon <rich...@damon-family.org> > wrote: > > > On 4/9/17 1:49 PM, Olivier Mascia wrote: > > > >> Le 9 avr. 2017 à 18:49, dip <x...@protonmail.com> a écrit : > >>> > >>> I downloaded latest SQLite Amalgamation (v 3.18.0) to embed it in my > >>> project. > >>> After that I got a lot of errors while compiling (compiler is Microsoft > >>> Visual Studio 2017). > >>> Errors were caused by the following line in sqlite3.h: > >>> > >>> typedef struct Mem sqlite3_value; > >>> > >>> The reason is that I have the namespace with the same name. > >>> So I have a suggestion to rename "struct Mem" to something else (add > >>> prefix to it) because "Mem" is a very common name like "input" or > "data" or > >>> "buffer" and there may be classes or namespaces having the same name. > >>> > >> The way to overcome this completely in large programmings using many > >> libraries is to include sqlite3.h within a namespace. Not something that > >> SQLite code must do itself: that's best handled at the user project > level. > >> > >> The problem with this is that if the header file is put in a namespace > in > > the user code, then the source file that defines these functions needs to > > also be changed to put the files in that same namespace, or the things > > being defined won't be found. > > > > think that's what 'use namespace' is for > > > -- > > Richard Damon > > > > > > ___ > > sqlite-users mailing list > > sqlite-users@mailinglists.sqlite.org > > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > -- Daniel *L'action accède à la perfection quand, bien que vivant, vous êtes déjà mort* *Bunan* ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] "struct Mem" conflicts with namespaces/classes having the same name
I see no problems with C++. Mem is only foward declared, you can redefined it to whatever you want. as long as you do not redefined it for sqlite.c you should be good. in sqlite.h it's declared: struct Mem; so in your code if you do: struct Mem { int a;int b;} then your definition will be used for your code. as sqlite is only using pointer, and has his own definition, I do not see the problem. it breaks the ODR, but as I previously said it's used/allocated internally by sqlite which should never see your definition. can you explain in more detail what is happening ? can you make a small reproduceable sample ? also are you mixing C++ & C, or is your code all in c ? Daniel 2017-04-09 15:49 GMT-04:00 dip <x...@protonmail.com>: > sqlite3.c is C file. C does not support namespaces. > Even though another project files are .cpp, sqlite3.c is still compiled as > C language source. > Therefore, no ability to use "using namespace" in sqlite3.c. > Also, "using namespace" does not actually put functions in the source in > namespace. It just helps it find another functions without specifying > namespace name. > > Sent with [ProtonMail](https://protonmail.com) Secure Email. > > -------- Original Message > Subject: Re: [sqlite] "struct Mem" conflicts with namespaces/classes > having the same name > Local Time: April 9, 2017 10:23 PM > UTC Time: April 9, 2017 7:23 PM > From: d3c...@gmail.com > To: SQLite mailing list <sqlite-users@mailinglists.sqlite.org> > > On Sun, Apr 9, 2017 at 12:20 PM, Richard Damon <rich...@damon-family.org> > wrote: > > > On 4/9/17 1:49 PM, Olivier Mascia wrote: > > > >> Le 9 avr. 2017 à 18:49, dip <x...@protonmail.com> a écrit : > >>> > >>> I downloaded latest SQLite Amalgamation (v 3.18.0) to embed it in my > >>> project. > >>> After that I got a lot of errors while compiling (compiler is Microsoft > >>> Visual Studio 2017). > >>> Errors were caused by the following line in sqlite3.h: > >>> > >>> typedef struct Mem sqlite3_value; > >>> > >>> The reason is that I have the namespace with the same name. > >>> So I have a suggestion to rename "struct Mem" to something else (add > >>> prefix to it) because "Mem" is a very common name like "input" or > "data" or > >>> "buffer" and there may be classes or namespaces having the same name. > >>> > >> The way to overcome this completely in large programmings using many > >> libraries is to include sqlite3.h within a namespace. Not something that > >> SQLite code must do itself: that's best handled at the user project > level. > >> > >> The problem with this is that if the header file is put in a namespace > in > > the user code, then the source file that defines these functions needs to > > also be changed to put the files in that same namespace, or the things > > being defined won't be found. > > > > think that's what 'use namespace' is for > > > -- > > Richard Damon > > > > > > ___ > > sqlite-users mailing list > > sqlite-users@mailinglists.sqlite.org > > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > -- Daniel *L'action accède à la perfection quand, bien que vivant, vous êtes déjà mort* *Bunan* ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] "struct Mem" conflicts with namespaces/classes having the same name
On Sun, 9 Apr 2017, dip wrote: What happens with mangling then? extern "C" functions inside a namespace just do not get mangled? If so, sounds like a workaround. Yes, extern "C" functions don't get mangled. Bob -- Bob Friesenhahn bfrie...@simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/ GraphicsMagick Maintainer,http://www.GraphicsMagick.org/ ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] "struct Mem" conflicts with namespaces/classes having the same name
You mean like this: https://www.sqlite.org/src/info/19dd753f9e50fee2 -- ˙uʍop-ǝpısdn sı ɹoʇıuoɯ ɹnoʎ 'sıɥʇ pɐǝɹ uɐɔ noʎ ɟı > -Original Message- > From: sqlite-users [mailto:sqlite-users-boun...@mailinglists.sqlite.org] > On Behalf Of dip > Sent: Sunday, 9 April, 2017 14:48 > To: SQLite mailing list <sqlite-users@mailinglists.sqlite.org> > Subject: Re: [sqlite] "struct Mem" conflicts with namespaces/classes > having the same name > > What happens with mangling then? extern "C" functions inside a namespace > just do not get mangled? If so, sounds like a workaround. > > But it will be really better if SQLite adds prefix to it's "Mem" and other > internals. > > Sent with [ProtonMail](https://protonmail.com) Secure Email. > > Original Message ---- > Subject: Re: [sqlite] "struct Mem" conflicts with namespaces/classes > having the same name > Local Time: April 9, 2017 11:19 PM > UTC Time: April 9, 2017 8:19 PM > From: bfrie...@simple.dallas.tx.us > To: SQLite mailing list <sqlite-users@mailinglists.sqlite.org> > > On Sun, 9 Apr 2017, dip wrote: > > > sqlite3.c is C file. C does not support namespaces. > > Even though another project files are .cpp, sqlite3.c is still compiled > as C language source. > > Therefore, no ability to use "using namespace" in sqlite3.c. > > Also, "using namespace" does not actually put functions in the source in > namespace. It just helps it find another functions without specifying > namespace name. > > Nevertheless, it is possible to include the C header file within a C++ > namespace and then import the functions you need into the namespace > used by your own C++ code or refer to them specifically within the > namespace you created. I have done this successfully across many C++ > compilers for 19 years already. > > It would definitely be best if sqlite does not pollute the name space > with names not starting from a common prefix. > > Bob > -- > Bob Friesenhahn > bfrie...@simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/ > GraphicsMagick Maintainer, http://www.GraphicsMagick.org/ > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] "struct Mem" conflicts with namespaces/classes having the same name
What happens with mangling then? extern "C" functions inside a namespace just do not get mangled? If so, sounds like a workaround. But it will be really better if SQLite adds prefix to it's "Mem" and other internals. Sent with [ProtonMail](https://protonmail.com) Secure Email. Original Message ---- Subject: Re: [sqlite] "struct Mem" conflicts with namespaces/classes having the same name Local Time: April 9, 2017 11:19 PM UTC Time: April 9, 2017 8:19 PM From: bfrie...@simple.dallas.tx.us To: SQLite mailing list <sqlite-users@mailinglists.sqlite.org> On Sun, 9 Apr 2017, dip wrote: > sqlite3.c is C file. C does not support namespaces. > Even though another project files are .cpp, sqlite3.c is still compiled as C > language source. > Therefore, no ability to use "using namespace" in sqlite3.c. > Also, "using namespace" does not actually put functions in the source in > namespace. It just helps it find another functions without specifying > namespace name. Nevertheless, it is possible to include the C header file within a C++ namespace and then import the functions you need into the namespace used by your own C++ code or refer to them specifically within the namespace you created. I have done this successfully across many C++ compilers for 19 years already. It would definitely be best if sqlite does not pollute the name space with names not starting from a common prefix. Bob -- Bob Friesenhahn bfrie...@simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/ GraphicsMagick Maintainer, http://www.GraphicsMagick.org/ ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] "struct Mem" conflicts with namespaces/classes having the same name
On Sun, 9 Apr 2017, dip wrote: sqlite3.c is C file. C does not support namespaces. Even though another project files are .cpp, sqlite3.c is still compiled as C language source. Therefore, no ability to use "using namespace" in sqlite3.c. Also, "using namespace" does not actually put functions in the source in namespace. It just helps it find another functions without specifying namespace name. Nevertheless, it is possible to include the C header file within a C++ namespace and then import the functions you need into the namespace used by your own C++ code or refer to them specifically within the namespace you created. I have done this successfully across many C++ compilers for 19 years already. It would definitely be best if sqlite does not pollute the name space with names not starting from a common prefix. Bob -- Bob Friesenhahn bfrie...@simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/ GraphicsMagick Maintainer,http://www.GraphicsMagick.org/ ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] "struct Mem" conflicts with namespaces/classes having the same name
sqlite3.c is C file. C does not support namespaces. Even though another project files are .cpp, sqlite3.c is still compiled as C language source. Therefore, no ability to use "using namespace" in sqlite3.c. Also, "using namespace" does not actually put functions in the source in namespace. It just helps it find another functions without specifying namespace name. Sent with [ProtonMail](https://protonmail.com) Secure Email. Original Message ---- Subject: Re: [sqlite] "struct Mem" conflicts with namespaces/classes having the same name Local Time: April 9, 2017 10:23 PM UTC Time: April 9, 2017 7:23 PM From: d3c...@gmail.com To: SQLite mailing list <sqlite-users@mailinglists.sqlite.org> On Sun, Apr 9, 2017 at 12:20 PM, Richard Damon <rich...@damon-family.org> wrote: > On 4/9/17 1:49 PM, Olivier Mascia wrote: > >> Le 9 avr. 2017 à 18:49, dip <x...@protonmail.com> a écrit : >>> >>> I downloaded latest SQLite Amalgamation (v 3.18.0) to embed it in my >>> project. >>> After that I got a lot of errors while compiling (compiler is Microsoft >>> Visual Studio 2017). >>> Errors were caused by the following line in sqlite3.h: >>> >>> typedef struct Mem sqlite3_value; >>> >>> The reason is that I have the namespace with the same name. >>> So I have a suggestion to rename "struct Mem" to something else (add >>> prefix to it) because "Mem" is a very common name like "input" or "data" or >>> "buffer" and there may be classes or namespaces having the same name. >>> >> The way to overcome this completely in large programmings using many >> libraries is to include sqlite3.h within a namespace. Not something that >> SQLite code must do itself: that's best handled at the user project level. >> >> The problem with this is that if the header file is put in a namespace in > the user code, then the source file that defines these functions needs to > also be changed to put the files in that same namespace, or the things > being defined won't be found. > > think that's what 'use namespace' is for > -- > Richard Damon > > > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] "struct Mem" conflicts with namespaces/classes having the same name
On Sun, Apr 9, 2017 at 12:20 PM, Richard Damonwrote: > On 4/9/17 1:49 PM, Olivier Mascia wrote: > >> Le 9 avr. 2017 à 18:49, dip a écrit : >>> >>> I downloaded latest SQLite Amalgamation (v 3.18.0) to embed it in my >>> project. >>> After that I got a lot of errors while compiling (compiler is Microsoft >>> Visual Studio 2017). >>> Errors were caused by the following line in sqlite3.h: >>> >>> typedef struct Mem sqlite3_value; >>> >>> The reason is that I have the namespace with the same name. >>> So I have a suggestion to rename "struct Mem" to something else (add >>> prefix to it) because "Mem" is a very common name like "input" or "data" or >>> "buffer" and there may be classes or namespaces having the same name. >>> >> The way to overcome this completely in large programmings using many >> libraries is to include sqlite3.h within a namespace. Not something that >> SQLite code must do itself: that's best handled at the user project level. >> >> The problem with this is that if the header file is put in a namespace in > the user code, then the source file that defines these functions needs to > also be changed to put the files in that same namespace, or the things > being defined won't be found. > > think that's what 'use namespace' is for > -- > Richard Damon > > > ___ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] "struct Mem" conflicts with namespaces/classes having the same name
On 4/9/17 1:49 PM, Olivier Mascia wrote: Le 9 avr. 2017 à 18:49, dipa écrit : I downloaded latest SQLite Amalgamation (v 3.18.0) to embed it in my project. After that I got a lot of errors while compiling (compiler is Microsoft Visual Studio 2017). Errors were caused by the following line in sqlite3.h: typedef struct Mem sqlite3_value; The reason is that I have the namespace with the same name. So I have a suggestion to rename "struct Mem" to something else (add prefix to it) because "Mem" is a very common name like "input" or "data" or "buffer" and there may be classes or namespaces having the same name. The way to overcome this completely in large programmings using many libraries is to include sqlite3.h within a namespace. Not something that SQLite code must do itself: that's best handled at the user project level. The problem with this is that if the header file is put in a namespace in the user code, then the source file that defines these functions needs to also be changed to put the files in that same namespace, or the things being defined won't be found. -- Richard Damon ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Re: [sqlite] "struct Mem" conflicts with namespaces/classes having the same name
> Le 9 avr. 2017 à 18:49, dipa écrit : > > I downloaded latest SQLite Amalgamation (v 3.18.0) to embed it in my project. > After that I got a lot of errors while compiling (compiler is Microsoft > Visual Studio 2017). > Errors were caused by the following line in sqlite3.h: > > typedef struct Mem sqlite3_value; > > The reason is that I have the namespace with the same name. > So I have a suggestion to rename "struct Mem" to something else (add prefix > to it) because "Mem" is a very common name like "input" or "data" or "buffer" > and there may be classes or namespaces having the same name. The way to overcome this completely in large programmings using many libraries is to include sqlite3.h within a namespace. Not something that SQLite code must do itself: that's best handled at the user project level. -- Best regards, Meilleures salutations, Met vriendelijke groeten, Olivier Mascia (from mobile device), http://integral.software ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
[sqlite] "struct Mem" conflicts with namespaces/classes having the same name
I downloaded latest SQLite Amalgamation (v 3.18.0) to embed it in my project. After that I got a lot of errors while compiling (compiler is Microsoft Visual Studio 2017). Errors were caused by the following line in sqlite3.h: typedef struct Mem sqlite3_value; The reason is that I have the namespace with the same name. So I have a suggestion to rename "struct Mem" to something else (add prefix to it) because "Mem" is a very common name like "input" or "data" or "buffer" and there may be classes or namespaces having the same name. Sent with [ProtonMail](https://protonmail.com) Secure Email. ___ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users