gpt4 book ai didi

c++ - 使用 c++0x 标志编译 wxWidgets

转载 作者:行者123 更新时间:2023-11-30 04:33:29 25 4
gpt4 key购买 nike

尝试编译时 wxWidgets-2.9.1来自 c++0x 的来源使用 gcc-4.6 的标志.我遇到了一个错误

narrowing conversion of '128' from 'int' to 'char' inside { } [-fpermissive]在文件中 src/gtk/dcclient.cpp .错误来自以下文件:

  1. src/gtk/bdiag.xbm
  2. src/gtk/cdiag.xbm
  3. src/gtk/fdiag.xbm
  4. src/gtk/horiz.xbm
  5. src/gtk/verti.xbm
  6. src/gtk/cross.xbm

这是一个已知错误。 http://trac.wxwidgets.org/ticket/12575所以我按照要求做了,程序编译正常。

基本上,diff 有两种修复方法文件有

//在文件dcclient.h

  1. hatches[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 文件中的类似修复

  2. static char bdiag_bits[] = {

    静态无符号字符 bdiag_bits[] = {0x80、0x80、0x40、0x40、0x20、0x20、0x10、0x10、0x08、0x08、0x04、0x04、0x02、0x02、0x01、0x01、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 ?

最佳答案

unsigned charsigned charchar(也称为“plain char”)是三种不同的类型。 unsigned char*char* 之间没有转换。

关于c++ - 使用 c++0x 标志编译 wxWidgets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6784334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com