Problem with vectors in g++

Discussion in 'C++' started by JeanDean, Feb 13, 2007.

  1. JeanDean

    JeanDean Guest

    I am trying to use "User-difned allocator " but on compilation it is
    giving conflicts for memcopy
    declarations with in string.h .

    Please refer the below compile error log:

    any suggestions how to resolve this???

    g++ -g -DUNIX -DLINUX -DX86 -DCONIC_X86 -DCOMP_X86 -DDRAW_X86 -
    DDR_X86 -DDEBUG -DDEBUGforCDC -DDEBUG_COMMANDLOG -DSUPPORT_IPS -
    DTARGET_IRIPS -DTARGET_06S -DUSE_MEMCPY -DBUGFIX_RPCS_SPL_FLUSH -
    DBUGFIX_POLYLINE_CLIP -I. -I../src -I../include -I../../include -I../
    include/gps -I../../libge/include -I../../libdraw3/include -I../../
    libipa/inc -I../../libdi/inc -c -o render.o ../src/render.c
    In file included from /usr/include/g++-3/stl_algobase.h:48,
    from /usr/include/g++-3/vector:30,
    from ../include/pr_internal.h:15,
    from ../include/object.h:9,
    from ../include/spool.h:13,
    from ../src/render.c:27:
    /usr/include/string.h:242: declaration of C function `void memcpy
    (void
    *, const void *, unsigned int)' conflicts with
    /usr/include/string.h:42: previous declaration `void *memcpy (void *,
    const void *, unsigned int)' here
    JeanDean, Feb 13, 2007
    #1
    1. Advertising

  2. JeanDean

    Guest

    On Feb 13, 2:43 am, "JeanDean" <> wrote:
    > I am trying to use "User-difned allocator " but on compilation it is
    > giving conflicts for memcopy
    > declarations with in string.h .
    >
    > Please refer the below compile error log:
    >
    > any suggestions how to resolve this???
    >
    > g++ -g -DUNIX -DLINUX -DX86 -DCONIC_X86 -DCOMP_X86 -DDRAW_X86 -
    > DDR_X86 -DDEBUG -DDEBUGforCDC -DDEBUG_COMMANDLOG -DSUPPORT_IPS -
    > DTARGET_IRIPS -DTARGET_06S -DUSE_MEMCPY -DBUGFIX_RPCS_SPL_FLUSH -
    > DBUGFIX_POLYLINE_CLIP -I. -I../src -I../include -I../../include -I../
    > include/gps -I../../libge/include -I../../libdraw3/include -I../../
    > libipa/inc -I../../libdi/inc -c -o render.o ../src/render.c
    > In file included from /usr/include/g++-3/stl_algobase.h:48,
    > from /usr/include/g++-3/vector:30,
    > from ../include/pr_internal.h:15,
    > from ../include/object.h:9,
    > from ../include/spool.h:13,
    > from ../src/render.c:27:
    > /usr/include/string.h:242: declaration of C function `void memcpy
    > (void
    > *, const void *, unsigned int)' conflicts with
    > /usr/include/string.h:42: previous declaration `void *memcpy (void *,
    > const void *, unsigned int)' here



    Jean,

    There are a couple options:
    1) Rename your function to something other than memcpy.
    2) Don't include strings.h in a file where you use your memcpy
    function.
    3) Place your version of memcpy in a namespace and access it with the
    fully qualified namespace.
    4) Place your version of mempcy in an object if it makes sense.

    The option you should go with is probably option 1. Naming a function
    the same as a standard function is generally a Bad Idea (TM).

    HTH,
    Paul Davis
    , Feb 13, 2007
    #2
    1. Advertising

  3. JeanDean

    JeanDean Guest

    On Feb 13, 6:03 pm, ""
    <> wrote:
    > On Feb 13, 2:43 am, "JeanDean" <> wrote:
    >
    >
    >
    > > I am trying to use "User-difned allocator " but on compilation it is
    > > giving conflicts for memcopy
    > > declarations with in string.h .

    >
    > > Please refer the below compile error log:

    >
    > > any suggestions how to resolve this???

    >
    > > g++ -g -DUNIX -DLINUX -DX86 -DCONIC_X86 -DCOMP_X86 -DDRAW_X86 -
    > > DDR_X86 -DDEBUG -DDEBUGforCDC -DDEBUG_COMMANDLOG -DSUPPORT_IPS -
    > > DTARGET_IRIPS -DTARGET_06S -DUSE_MEMCPY -DBUGFIX_RPCS_SPL_FLUSH -
    > > DBUGFIX_POLYLINE_CLIP -I. -I../src -I../include -I../../include -I../
    > > include/gps -I../../libge/include -I../../libdraw3/include -I../../
    > > libipa/inc -I../../libdi/inc -c -o render.o ../src/render.c
    > > In file included from /usr/include/g++-3/stl_algobase.h:48,
    > > from /usr/include/g++-3/vector:30,
    > > from ../include/pr_internal.h:15,
    > > from ../include/object.h:9,
    > > from ../include/spool.h:13,
    > > from ../src/render.c:27:
    > > /usr/include/string.h:242: declaration of C function `void memcpy
    > > (void
    > > *, const void *, unsigned int)' conflicts with
    > > /usr/include/string.h:42: previous declaration `void *memcpy (void *,
    > > const void *, unsigned int)' here

    >
    > Jean,
    >
    > There are a couple options:
    > 1) Rename your function to something other than memcpy.
    > 2) Don't include strings.h in a file where you use your memcpy
    > function.
    > 3) Place your version of memcpy in a namespace and access it with the
    > fully qualified namespace.
    > 4) Place your version of mempcy in an object if it makes sense.
    >
    > The option you should go with is probably option 1. Naming a function
    > the same as a standard function is generally a Bad Idea (TM).
    >
    > HTH,
    > Paul Davis


    Actually it is conflicting in the string.h itself.
    Line number 242 and 42 of string.h


    Line 242 in string.h

    #if defined __USE_BSD
    /* Copy N bytes of SRC to DEST (like memmove, but args reversed). */
    extern void bcopy (__const void *__src, void *__dest, size_t __n)
    __THROW;


    Line 42 in string.h

    /* Copy N bytes of SRC to DEST. */
    extern void *memcpy (void *__restrict __dest,
    __const void *__restrict __src, size_t __n)
    __THROW;
    /* Copy N bytes of SRC to DEST, guaranteeing
    correct behavior for overlapping strings. */
    extern void *memmove (void *__dest, __const void *__src, size_t __n)
    __THROW;
    JeanDean, Feb 13, 2007
    #3
  4. JeanDean wrote:
    > On Feb 13, 6:03 pm, ""
    > <> wrote:
    >> On Feb 13, 2:43 am, "JeanDean" <> wrote:
    >>
    >>
    >>
    >>> I am trying to use "User-difned allocator " but on compilation it is
    >>> giving conflicts for memcopy
    >>> declarations with in string.h .
    >>> Please refer the below compile error log:
    >>> any suggestions how to resolve this???
    >>> g++ -g -DUNIX -DLINUX -DX86 -DCONIC_X86 -DCOMP_X86 -DDRAW_X86 -
    >>> DDR_X86 -DDEBUG -DDEBUGforCDC -DDEBUG_COMMANDLOG -DSUPPORT_IPS -
    >>> DTARGET_IRIPS -DTARGET_06S -DUSE_MEMCPY -DBUGFIX_RPCS_SPL_FLUSH -
    >>> DBUGFIX_POLYLINE_CLIP -I. -I../src -I../include -I../../include -I../
    >>> include/gps -I../../libge/include -I../../libdraw3/include -I../../
    >>> libipa/inc -I../../libdi/inc -c -o render.o ../src/render.c
    >>> In file included from /usr/include/g++-3/stl_algobase.h:48,
    >>> from /usr/include/g++-3/vector:30,
    >>> from ../include/pr_internal.h:15,
    >>> from ../include/object.h:9,
    >>> from ../include/spool.h:13,
    >>> from ../src/render.c:27:
    >>> /usr/include/string.h:242: declaration of C function `void memcpy
    >>> (void
    >>> *, const void *, unsigned int)' conflicts with
    >>> /usr/include/string.h:42: previous declaration `void *memcpy (void *,
    >>> const void *, unsigned int)' here

    >> Jean,
    >>
    >> There are a couple options:
    >> 1) Rename your function to something other than memcpy.
    >> 2) Don't include strings.h in a file where you use your memcpy
    >> function.
    >> 3) Place your version of memcpy in a namespace and access it with the
    >> fully qualified namespace.
    >> 4) Place your version of mempcy in an object if it makes sense.
    >>
    >> The option you should go with is probably option 1. Naming a function
    >> the same as a standard function is generally a Bad Idea (TM).
    >>
    >> HTH,
    >> Paul Davis

    >
    > Actually it is conflicting in the string.h itself.
    > Line number 242 and 42 of string.h
    >
    >
    > Line 242 in string.h
    >
    > #if defined __USE_BSD
    > /* Copy N bytes of SRC to DEST (like memmove, but args reversed). */
    > extern void bcopy (__const void *__src, void *__dest, size_t __n)
    > __THROW;
    >
    >
    > Line 42 in string.h
    >
    > /* Copy N bytes of SRC to DEST. */
    > extern void *memcpy (void *__restrict __dest,
    > __const void *__restrict __src, size_t __n)
    > __THROW;
    > /* Copy N bytes of SRC to DEST, guaranteeing
    > correct behavior for overlapping strings. */
    > extern void *memmove (void *__dest, __const void *__src, size_t __n)
    > __THROW;


    That's pretty weird, since on line 242 you have 'bcopy'
    and not 'memcpy'. Maybe someone happily #defined bcopy to memcpy?

    HTH,
    - J.
    Jacek Dziedzic, Feb 13, 2007
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Scott Phelps
    Replies:
    3
    Views:
    388
    Wendy Smoak
    Jun 10, 2005
  2. ree
    Replies:
    9
    Views:
    340
    Ron Natalie
    Nov 9, 2003
  3. Adam Hartshorne
    Replies:
    6
    Views:
    391
    Chris Croughton
    Mar 24, 2005
  4. Replies:
    3
    Views:
    691
    Shadowman
    Mar 26, 2008
  5. Guest
    Replies:
    0
    Views:
    438
    Guest
    Sep 14, 2005
Loading...

Share This Page