Hello,

When building dtmail with gcc 4.2 I get the following warning:

making all in programs/dtmail/MotifApp...
rm -f Application.o
CC -c -O -Wno-write-strings  -I../include/MotifApp -I../include 
-I../include/utils -I../../.. -I../.
./../exports/include -I../../../imports/motif/include 
-I../../../imports/x11/include  -DCSRG_BASED -
DANSICPP -DMULTIBYTE -DNLS16    -DOSMAJORVERSION=9 -DOSMINORVERSION=0     
Application.C
Application.C:83: warning: invalid access to non-static data member 
'Application::_appWorkspaceList' of NULL object
Application.C:83: warning: (perhaps the 'offsetof' macro was used incorrectly)

Application.C is here:

    79  XtResource
    80  Application::_appResources[] = {
    81    {
    82      "workspaceList", "WorkspaceList", XtRString, sizeof(XtRString),
    83      XtOffset(Application *, _appWorkspaceList), XtRString, (XtPointer) 
NULL
    84    }
    85  };

The class is declared as follows:

    82  class Application : public UIComponent {
    83      
...
    87  
    88    private:    
...
    95    protected:

    97      // Functions to handle Xt interface
    98      virtual void initialize ( int *, char ** );  
    99      virtual void handleEvents();

...

   106      static XtResource
   107                  _appResources[];
   108      char        *_appWorkspaceList;
   109      int          _bMenuButton;
...
   119    public:
   120      
   121      Application ( char * );
   122      virtual ~Application();     
...
   163  };

C++ websites say that offsetof() shouldn't be used
on more complex classes like those having virtual
methods. Here's that info file to my GCC says:

`-Wno-invalid-offsetof (C++ only)'
     Suppress warnings from applying the `offsetof' macro to a non-POD
     type.  According to the 1998 ISO C++ standard, applying `offsetof'
     to a non-POD type is undefined.  In existing C++ implementations,
     however, `offsetof' typically gives meaningful results even when
     applied to certain kinds of non-POD types. (Such as a simple
     `struct' that fails to be a POD type only by virtue of having a
     constructor.)  This flag is for users who are aware that they are
     writing nonportable code and who have deliberately chosen to
     ignore the warning about it.

     The restrictions on `offsetof' may be relaxed in a future version
     of the C++ standard.

Shall we worry about this in this case?
There few other classes that have this problem, too.

//Marcin

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
cdesktopenv-devel mailing list
cdesktopenv-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cdesktopenv-devel

Reply via email to