Experimental Physics and Industrial Control System
I was afraid of that.
Another solution should be to set a compiler flag that disables the "narrowing" check (Wnarrowing).
Mark
-----Original Message-----
From: Pierrick Hanlet [mailto:[email protected]]
Sent: Thursday, February 02, 2017 9:57 AM
To: Mark Rivers; [email protected]
Subject: Re: problem compiling edm
Hi Mark,
Thank you for the quick response. Initially this appeared to work, but
I had many more arrays to which I needed to do this. After having
modified them all,
it appears that I've replaced one problem for another. Now I get:
../expString.cc:722:32: warning: ISO C++ forbids converting a string
constant to 'char*' [-Wwrite-strings]
/usr/bin/g++ -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_X86_64_ -DUNIX
-Dlinux -O3 -g -Wall -DSINGLE_THREADED=1 -D__epics__=1
-mtune=generic -m64 -fPIC -I. -I../O.Common -I. -I. -I..
-I../../../../include/edm/compiler/gcc
-I../../../../include/edm/os/Linux -I../../../../include/edm
-I/home/epics/epicsDEV/base/include/compiler/gcc
-I/home/epics/epicsDEV/base/include/os/Linux
-I/home/epics/epicsDEV/base/include
-I/home/epics/epicsDEV/extensions/include -I../../util
-I../../lib -I/usr/include -I/usr/include -c ../cursor.cc
../cursor.cc: In member function 'void cursorClass::create(Display*,
Window, Colormap)':
../cursor.cc:416:39: error: invalid conversion from 'unsigned char*' to
'char*' [-fpermissive]
cross_width, cross_height, 1, 0, 1 );
^
In file included from ../cursor.h:22:0,
from ../cursor.cc:19:
/usr/include/X11/Xlib.h:1611:15: note: initializing argument 3 of
'Pixmap XCreatePixmapFromBitmapData(Display*, Drawable, char*, unsigned
int, unsigned int, long unsigned int, long unsigned int, unsigned int)'
extern Pixmap XCreatePixmapFromBitmapData(
^~~~~~~~~~~~~~~~~~~~~~~~~~~
../cursor.cc:419:39: error: invalid conversion from 'unsigned char*' to
'char*' [-fpermissive]
cross_width, cross_height, 1, 0, 1 );
etc.
Thanks,
Pierrick
On 02/02/2017 02:23 PM, Mark Rivers wrote:
> That line is this:
>
> static char pntrWithHelp_bits[] = {
> 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x42,
> 0x20, 0x00, 0x00, 0x40, 0x60, 0x00, 0x00, 0x40, 0xe0, 0x00, 0x00, 0x60,
> 0xe0, 0x01, 0x00, 0x30, 0xe0, 0x03, 0x00, 0x08, 0xe0, 0x07, 0x00, 0x08,
> 0xe0, 0x0f, 0x00, 0x08, 0xe0, 0x1f, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x08,
> 0xe0, 0x03, 0x00, 0x00, 0xe0, 0x06, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00,
> 0x20, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
> 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
>
> I suspect the problem is that char is a signed type and the compiler is complaining because an integer larger than 127 is being assigned (e.g. 0xe0). What happens if you change that to "static unsigned char"?
>
> Mark
>
>
> ________________________________________
> From: [email protected] [[email protected]] on behalf of Pierrick Hanlet [[email protected]]
> Sent: Thursday, February 02, 2017 8:15 AM
> To: [email protected]
> Subject: problem compiling edm
>
> I've a new pc on which I'm running Fedora release 25. I'm using base
> 3.15.5.
>
> I'm attempting to build edm, but whilst attempting to compile, I get:
>
> make[2]: Entering directory
> '/home/epics/epicsDEV/extensions/src/edm/lib/O.linux-x86_64'
> /usr/bin/g++ -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_X86_64_ -DUNIX
> -Dlinux -O3 -g -Wall -DSINGLE_THREADED=1 -D__epics__=1
> -mtune=generic -m64 -fPIC -I. -I../O.Common -I. -I. -I..
> -I../../../../include/edm/compiler/gcc
> -I../../../../include/edm/os/Linux -I../../../../include/edm
> -I/home/epics/epicsDEV/base/include/compiler/gcc
> -I/home/epics/epicsDEV/base/include/os/Linux
> -I/home/epics/epicsDEV/base/include
> -I/home/epics/epicsDEV/extensions/include -I../../util
> -I../../lib -I/usr/include -I/usr/include -c ../cursor.cc
> ../cursor.cc: In member function 'void cursorClass::create(Display*,
> Window, Colormap)':
> ../cursor.cc:82:50: error: narrowing conversion of '224' from 'int' to
> 'char' inside { } [-Wnarrowing]
> 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
> ^
> ../cursor.cc:82:50: error: narrowing conversion of '224' from 'int' to
> 'char' inside { } [-Wnarrowing]
> ../cursor.cc:82:50: error: narrowing conversion of '224' from 'int' to
> 'char' inside { } [-Wnarrowing]
> and many more lines of the same.
>
> I can't find this problem in tech-talk, nor with a web search. Has
> anyone run into this problem and if so, how did you resolve it?
> Many thanks,
> Pierrick
>
- Replies:
- Re: problem compiling edm S. Banerian
- References:
- problem compiling edm Pierrick Hanlet
- RE: problem compiling edm Mark Rivers
- Re: problem compiling edm Pierrick Hanlet
- Navigate by Date:
- Prev:
Re: problem compiling edm Pierrick Hanlet
- Next:
Re: problem compiling edm S. Banerian
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
<2017>
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: problem compiling edm Pierrick Hanlet
- Next:
Re: problem compiling edm S. Banerian
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
<2017>
2018
2019
2020
2021
2022
2023
2024