• ベストアンサー

GTKプログラミングで型宣言するときにgintとかgdoubleなどと

GTKプログラミングで型宣言するときにgintとかgdoubleなどとgをつけて型宣言をしていますが、なぜgを付けるんでしょうか? 初心者ゆえに分からず困っています。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

これらは GTK+ で利用している GLib で定義されている型です。おそらくGLib で定義していることを表すために頭文字の g を付けているのだと思います。 で、なぜそのような型を定義しているかですが、GLib リファレンスマニュアルの基本型ページ(参考URL、英語)の Description 節で GLib で定義している型を以下の 4 つに分類しています。 ・標準 C には無い型 ・すべてのプラットフォームで同一のサイズになる整数型 ・標準 C での表記よりも利用しやすくするための型 ・標準 C にある型だが、他と見た目をあわせたもの 今回の gint と gdouble は上記の 4 番目にあたります。

参考URL:
http://library.gnome.org/devel/glib/stable/glib-Basic-Types.html
ikx522
質問者

お礼

ありがとうございます! なるほどすごくすっきりしました。 英語が怖くて読もうとしなかったのですがちゃんと読まないと日本語の情報が少ないGTKプログラミングは難しいですね。

関連するQ&A

  • GTK+の本を探しています。

    GTK+ではじめる Xプログラミング  という本以外で GTK+プログラミングの書物をご存知の方いらっしゃいませんか? もしご存知であれば、 出版社等お聞きしたいです。 よろしくお願いします。

  • Javaでの型宣言について

    はじめまして。 初投稿となります。 最近Javaの学習をはじめたのですが、 疑問があります。 Javaでは型の宣言を曖昧にすることってできますか? ActionScriptで例えると var obj:*; というように、 明示的に型宣言するのではなく、 汎用的に変数を扱うことはできますか? ご教授お願いいたします。

    • ベストアンサー
    • Java
  • ASPで型宣言

    ASPにおいて変数宣言するとき dim xxx as String などの型宣言はできないでしょうか?? よろしくお願いします!!!

  • VBの型宣言の場所について

    VBでは、型宣言がどこでもできますが、 プログラムはじめに型宣言をかためたものと の差はあるものなのでしょうか?実行速度が速いとか?

  • Object型じゃない型で宣言したいです。

    Function MyDesktop() Dim WSH Set WSH = CreateObject("Wscript.Shell") MyDesktop = WSH.SpecialFolders("Desktop") Set WSH = Nothing End Function このコードの Dim WSH に、ちゃんと変数の宣言をしてあげたいのですが 何で変数の宣言をして、どこに参照設定をすればいいのでしょうか? Object型じゃない型で宣言したいです。

  • Linux GTK+でのコンパイルエラー

    GKT+でプログラミングをしたいと思い、下記のサイトを見ながらサンプルプログラムをコンパイルしたら下のようなエラーが表示されました。原因が全くわからず困っています。わかる方教えてください。 【参考にしたサイト】 http://samidarehetima.web.fc2.com/howtogtk/top.html#toc_1 【コード】 #include <gtk/gtk.h> //ボタンがクリックされたときに呼び出される関数 static void button_clicked(GtkWidget *button, gpointer user_data) { gtk_main_quit(); } int main(int argc, char** argv){ GtkWidget *window; gtk_init(&argc,&argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_set_size_request(window,300,200); { //ボタンを作成する。 GtkWidget *button; button = gtk_button_new_with_label("Quit"); //ボタンをwindowに乗っける。 gtk_container_add(GTK_CONTAINER(window), button); //ボタンにclickedと表示し,押された時はbutton_clicked()を呼び出す。 g_signal_connect (G_OBJECT(button), "clicked" , G_CALLBACK(button_clicked), NULL); } g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); //windowの上にある物も全て表示する。(_allが付くことに注意) gtk_widget_show_all(window); gtk_main(); return 0; } 【エラー】 /tmp/ccmjmPda.o: In function `button_clicked': test.c:(.text+0x7): undefined reference to `gtk_main_quit' /tmp/ccmjmPda.o: In function `main': test.c:(.text+0x25): undefined reference to `gtk_init' test.c:(.text+0x31): undefined reference to `gtk_window_new' test.c:(.text+0x51): undefined reference to `gtk_widget_set_size_request' test.c:(.text+0x5d): undefined reference to `gtk_button_new_with_label' test.c:(.text+0x66): undefined reference to `gtk_container_get_type' test.c:(.text+0x76): undefined reference to `g_type_check_instance_cast' test.c:(.text+0x86): undefined reference to `gtk_container_add' test.c:(.text+0x9f): undefined reference to `g_type_check_instance_cast' test.c:(.text+0xcb): undefined reference to `g_signal_connect_data' test.c:(.text+0xeb): undefined reference to `gtk_main_quit' test.c:(.text+0xff): undefined reference to `g_signal_connect_data' test.c:(.text+0x10b): undefined reference to `gtk_widget_show_all' test.c:(.text+0x110): undefined reference to `gtk_main' collect2: ld はステータス 1 で終了しました

  • Ubuntu feisy fawnでGTK+のプログラミングのコンパイルにて

    Ubuntu feisty fawnでGTK+とgccを使ってプログラミングをしたいのですが、コンパイルで手間取ってしまいました。 ソース #include <gtk/gtk.h> int main(int argc,char *argv[]){ GtkWidget *window; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_show(window); gtk_main(); return 0; } インストールしたパッケージ libgtk-2.0 pkg-config0.21-1build1 gcc-4.1 gcc-4.1-base これをコンパイルするときに cc -o base base.c 'pkg-config --cflags --libs gtk+-2.0' でやると cc: pkg-config --cflags --libs gtk+-2.0: No such file or directory base.c:1:21: error: gtk/gtk.h: No such file or directory base.c: In function ‘main’: base.c:4: error: ‘GtkWidget’ undeclared (first use in this function) base.c:4: error: (Each undeclared identifier is reported only once base.c:4: error: for each function it appears in.) base.c:4: error: ‘window’ undeclared (first use in this function) base.c:8: error: ‘GTK_WINDOW_TOPLEVEL’ undeclared (first use in this function) ちなみに単体でpkg-config --cflags --libs gtk+-2.0でコマンドを打った場合、 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXfixes -lpango-1.0 -lcairo -lX11 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 となっていました。 どなたか解決方法をご存知のかたはいませんでしょうか?

  • 型宣言に現れる * [] () の構文要素名は?

    型宣言の中に現れる "*","[]","()" (関数型を表す丸括弧) などは, 文法上は何という名前なのでしょうか? 例えば次の型宣言 (定義) char **p; int q[8]; において,手元の「ANSI C/C++ 辞典」によると, char や int は型指定子 (type specifier), **p はポインタ宣言子 (pointer declarator), q[8] は配列宣言子 (array declarator) になると思いますが, "*","[]" 単独の構文要素名は見あたりません. 個人的には * [] () のことを「型派生子」とか,曖昧に「(型派生)演算子」と呼んでいますが, 前者は上記の本にも載っていないし,検索しても全くヒットしません. 単に「演算子」だと他人に説明するとき誤解を招きそうだし….

  • JAVAで型を宣言するときの質問です

    JAVAで型を宣言するとき CarFactory factory = new BusFactory(); のように 宣言の型はCarFactoryで、newで実際に代入するのは BusFactory()というのは どういう意味なのでしょうか? 式の左側と右側で違うクラスを書く場合は どのような点に気をつけなければならないでしょうか? ちなみにこちらのサイトにあったコードです ttp://www.syboos.jp/sysdesign/doc/20080609224443186.html

    • ベストアンサー
    • Java
  • WindowsXPでのgtkのコンパイル方法

    タイトルの通り、 OS:WindowsXP、開発環境:Visual Studioでのgtkのコンパイルはどうすればよいのでしょうか? gtkはまったくの初心者です。 よろしくお願いします。

専門家に質問してみよう