Thread

  1. Clients do not compile with X11 includes under C++

    Hauke Joachim Zuehl <hzuehl@athene.owl.de> — 2001-04-01T23:46:20Z

    Hello Team :)
    
    With help of a programmers newsgroup I could solve the problem of not
    compiling (Linux) C++ clients using X11 and pgsql/libpq++/pgconnection.h
    (included via pgdatabase.h).
    
    Well, I tried the following:
    g++ -c kunde.cc -o kunde.o -I/usr/local/include -D__WXMOTIF__
    -D_REENTRANT -O2 -I/usr/include/pgsql/libpq++ -I/usr/include/pgsql \
            -I/usr/include/X11
    
    The error message was the following:
    /usr/include/pgsql/libpq++/pgconnection.h:69: extraneous `int' ignored
    /usr/include/pgsql/libpq++/pgconnection.h:69: parse error before `('
    
    The -D__WXMOTIF__ is necessary for wxWindows which also includes
    X11/Xlib.h.
    
    So I posted this to a newsgroup.
    
    The answer was quite simple: "In X11/Xlib.h you find a line where
    "#define Status int" is used."
    
    So next thing I did was to add the following lines into my program /
    header files:
    
    #ifdef Status
    #undef Status
    #endif
    
    before including the PostgreSQL C++ header.
    
    Remember:
    In  line 69 of pgconnection.h you may find
       ConnStatusType Status();
    
    and _without_ undefining Status the result is
       ConnStatusType int();
    which causes the error.
    
    After adding the above three lines the source was compiled without
    errors.
    
    So to avoid problems you should undefine Status in your header-file.
    
    My version of PostgreSQL is 7.0.2 (installed from a SuSE 7.0 CD).
    
    Regards,
    Hauke
    -- 
     /"\
     \ /  ASCII Ribbon Campaign
      x   Say NO to HTML in email and news
     / \