This is the mail archive of the mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: dbm.h reserved word.

The gdbm package is not necessarily set up for use with C++. When you
name a souce file with the .cpp extension, it automatically goes into
g++ mode, which causes cpp to include a bunch of other header files
(worse, C++ has a keyword called "delete").

Both of the following compile:
1) rename main.cpp to main.c, compile as before ('gcc -o -c main.o
2) modify the file as follows:
extern "C" {
#define delete dbm_delete
#include <dbm.h>
#undef delete
int main (void)
  return 0;

Of course, for #2, you'd have to explicitly call "dbm_delete" in your
application code when you want to remove a key from the dbm database,
and use the "delete" keyword when you want to free an unused object. 
(You can't use the #define hack in your application code, or you'll
conflate those two operations)


Travis Smith wrote:
> Using experimental packages of gcc, mingw, w32, cygwin.
> <dbm.h:85>
> extern GDBM_EXPORT(int, delete) ();
> </dbm.h>
> Which after looking at the top defines into:
> GDBM_IMPEXP int GDBM_API delete ();
> which goes to
> __declspec(dllexport) int __cdecl delete ();
> which is pulling delete from a dll as far as I know. (I haven't worked with
> dlls too much).
> There's a parse error on that line. I'm done, I don't know what's up.
> <log>
> ~/src $ cat main.cpp
> #include <dbm.h>
> int main ( void )
> {
>         return 0;
> }
> ~/src $ make
> gcc    -c -o main.o main.cpp
> In file included from main.cpp:1:
> /usr/include/dbm.h:85: parse error before `delete'
> make: *** [main.o] Error 1
> ~/src $
> </log>
> ~Travis Smith
> IT Professional
> _________________________________________________________
> Do You Yahoo!?
> Get your free address at
> --
> Want to unsubscribe from this list?
> Check out:

Want to unsubscribe from this list?
Check out:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]