を使用してフラグを使用しwxWidgets-2.9.1
てソースからコンパイルしようとしているとき。エラーに遭遇しましたc++0x
gcc-4.6
narrowing conversion of '128' from 'int' to 'char' inside { } [-fpermissive]
ファイル内src/gtk/dcclient.cpp
。エラーは次のファイルから発生します。
- src / gtk / bdiag.xbm
- src / gtk / cdiag.xbm
- src / gtk / fdiag.xbm
- src / gtk / horiz.xbm
- src / gtk / verti.xbm
- src / gtk / cross.xbm
これは既知のバグです。 http://trac.wxwidgets.org/ticket/12575 必要に応じて実行しましたが、プログラムは正常にコンパイルされています。
diff
基本的に、ファイルには2種類の修正があります
//ファイル内dcclient.h
ハッチング[i]=gdk_bitmap_create_from_data(NULL、bdiag_bits、bdiag_width、bdiag_height); ハッチング[i]=gdk_bitmap_create_from_data(NULL、reinterpret_cast <const char *>(bdiag_bits)、bdiag_width、bdiag_height);
//ファイルbdiag.xbmおよびすべての*.xbmファイルの同様の修正
static char bdiag_bits [] = {
static unsigned char bdiag_bits [] = {0x80、0x80、0x40、0x40、0x20、0x20、0x10、0x10、0x08、0x08、0x04、0x04、0x02、0x02、0x01、0x01、0x80、0x80、0x40、0x40、0x 0x20、0x10、0x10、0x08、0x08、0x04、0x04、0x02、0x02、0x01、0x01};
私は2番目を理解しましたfix
が、最初のものを理解できませんでした。なぜ関数を実行する必要があるreinterpret_cast< const char* >
のですか?関数gdk_bitmap_create_from_data
は次のように宣言されています。
typedef char gchar;//in some other header file
GdkBitmap* gdk_bitmap_create_from_data (GdkDrawable *drawable, const gchar *data, gint width, gint height);
数行後の同じファイルdcclient.cppで、次のを呼び出してgdk_bitmap_create_from_data
もエラーは発生しません。
char* data = new char[data_size];
//...
GdkPixmap* pixmap = gdk_bitmap_create_from_data(mask, data, dst_w, dst_h);
ここでは、型キャストは必要ありません。なぜreinterpret_castを実行する必要があるのstatic unsigned char*
ですか?