[英]Compiling const GdkPixdata: “error: initializer element is not constant”
我陷入了一個我無法理解的問題。
我想直接在我的C代碼中“包含”一系列圖標。 使用工具gdk-pixbuf-csource(帶--struct選項)我生成了一個文件,為每個圖像初始化一個'const'pixdata結構。 編碼圖像的例子如下:
const GdkPixdata pixdata_flipH = {
0x47646b50, /* Pixbuf magic: 'GdkP' */
24 + 479, /* header length + pixel_data length */
0x2010002, /* pixdata_type */
64, /* rowstride */
16, /* width */
16, /* height */
/* pixel_data: */
"\257\0\0\0\0\1\0\0\0\1\203\0\0\0\0\2\0\0\0\2\40J\207E\202\40J\207\377"
"\202\0\0\0\0\202\40J\207\377\2\40J\207E\40J\207\2\202\0\0\0\0\1\0\0\0"
"\2\203\0\0\0\0\4\40J\2072\40J\207\377\276\322\352\377\40J\207\377\202"
<data continues......>
"\0\0\0\0\1\40J\207\1\204\0\0\0\0\1\40J\207\3\227\0\0\0\0\1\0\0\0\3\244"
};
我想在一些按鈕中包含圖標,因此我准備了以下一系列語句:
GtkWidget *icon_flipH = gtk_image_new_from_pixbuf(gdk_pixbuf_from_pixdata(&pixdata_flipH, FALSE, NULL));
GtkWidget *icon_flipV = gtk_image_new_from_pixbuf(gdk_pixbuf_from_pixdata(&pixdata_flipV, FALSE, NULL));
// and so on...
通過這種方式,我將使用以下功能將圖像添加到按鈕:
gtk_button_set_image(GTK_BUTTON(button_flipH), icon_flipH);
嗯...... GCC編譯器在包含gdk_pixbuf_from_pixdata()函數的每一行中錯誤地說“初始化元素不是常量”。 我無法弄清楚為什么,因為函數需要一個const結構指針,實際上我的結構被聲明為'const'。
我忘記了什么嗎? 是不是將圖像包含在代碼中並創建pixbuf的正確方法? 在這種情況下的任何教程?
在文件范圍定義的對象(如icon_flipH
)具有靜態存儲持續時間:它們的生命周期是程序的生命周期,它們在程序啟動之前初始化。 只能以恆定表達(例如,初始化具有靜態存儲持續時間的對象0
, 10 + 32
,或sizeof (int)
)。 函數調用的結果不是常量表達式。
// File scope
GtkWidget *icon_flipH = NULL; // OK, NULL is a constant expression
GtkWidget *icon_flipV = foo(); // Not OK, foo is not a constant expression
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.