For your interest. Phapi will be a problem or better most of the wifo tree.

        -- andreas

-- 
http://www.cynapses.org/ - cybernetic synapses


--- Begin Message ---
The upcoming transition to GCC 4.3 will cause some common problems
in C and C++ source to become compile-time errors.  You investigate
if your Factory package is affected by looking at the
home:dirkmueller:playground:gcc43 project which is currently rebuilding
(most of) Factory with GCC 4.3.

Common problems include:

1) Missing includes.  The include dependencies of the standard library
   headers were cleaned up a lot and a lot less unneeded dependencies
   are pulled in.  This results in errors like

        Geometry.cpp: In member function 'const Magick::Geometry& 
Magick::Geometry::operator=(const std::string&)':
        Geometry.cpp:191: error: 'strcpy' was not declared in this scope
        make[3]: *** [Geometry.lo] Error 1

   which hints at that you should include <cstring>, the C++ standard
   include name of the C string.h header.  The rule of thumb is to look
   in which C header the missing function is in and then include the
   C++ variant which has a 'c' prepended and the '.h' stripped off.

   This is 90% of all errors we currently see with C++ programs.

2) There are extra warnings with GCC 4.3 and you use -Werror.  You simply
   need to fix them.

3) More picky preprocessor:

        main.cpp:182:7: error: extra tokens at end of #endif directive

   the preprocessor diagnoses

        #endif foo

   use #endif /* foo */ instead.

4) C99 inline semantics changes.  If you use 'extern inline foo(....' in
   headers and build with either -std=c99 or -std=gnu99 then you will
   probably face linker errors complaining about duplicate symbols.

   If you want to fix this in a way that is compatible with GCC 4.3 and
   previous versions use something like the following:

        extern inline
        #ifdef __GNU_STDC_INLINE__
        __attribute__((__gnu_inline__))
        #endif
        foo(....

   which will preserve the previous semantics.  If you do not care about
   compatibility with older GCC and want to use C99 semantics simply
   remove the 'extern' qualifier on inline functions defined in headers.

5) If you see something like

        /usr/include/zypp/Bit.h:86: error: declaration of 'typedef struct 
zypp::bit::MaxBits<_IntT> zypp::bit::Range<_IntT, _begin, _size>::MaxBits'
        /usr/include/zypp/Bit.h:52: error: changes meaning of 'MaxBits' from 
'struct zypp::bit::MaxBits<_IntT>'

   you did something like

        template <class T>
        struct Foo : public FooBar<T> {
                typedef Foo::FooBar<T> FooBar;
                ...

   this is invalid C++.  Use a different typedef-name here:

                typedef Foo::FooBar<T> FooBar_t;


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--- End Message ---

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Wengophone-devel mailing list
Wengophone-devel@lists.openwengo.com
http://dev.openwengo.com/mailman/listinfo/wengophone-devel

Reply via email to