嘗試使用gcc-4.6
從源編譯wxWidgets-2.9.1
使用c++0x
標誌。我遇到了一個錯誤使用C++編譯wxWidgets 0x標誌
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
文件具有
//在文件中dcclient.h
艙口[I] = gdk_bitmap_create_from_data(NULL,bdiag_bits ,bdiag_width,bdiag_height); hatches [i] = gdk_bitmap_create_from_data(NULL,reinterpret_cast < const char *>(bdiag_bits),bdiag_width,bdiag_height);
//在文件bdiag.xbm和類似的修復中的所有* .xbm文件
靜態炭 bdiag_bits [] = {
靜態無符號字符 bdiag_bits [] = { 0x80的,0x80的,0x40的,0x40的,爲0x20,0x20的,爲0x10,0x10的,0x08時,0x08時,0×04,×04, 0×02,0×02 0×01 0×01,0x80的,0x80的,0x40的,0x40的,爲0x20,0x20的,爲0x10, 0x10, 0x08,0x08,0x04,0x04,0x02,0x02,0x01,0x01};
我明白第二個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);
現在這裏沒有需要的類型轉換。爲什麼我們需要在static unsigned char*
上做一個reinterpret_cast?
什麼是gchar定義? – piotr
'typedef char gchar;' –