IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Compilation séparé GTK en C


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 34
    Par défaut Compilation séparé GTK en C
    Voilà, j'ai commencé à apprendre a utiliser la GTK et tout allais très bien avant que je tente une compilation separée, j'obtient le message d'erreur suivant :

    "expected ‘)’ before ‘*’ token" sur le fichier hello.c à la ligne1

    Le main.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #include <stdlib.h>
    #include <gtk/gtk.h>
    #include "header.h"
     
    int main(int argc, char **argv)
    {
        GtkWidget *pWindow;
        GtkWidget *pTable;
        GtkWidget *pButton[4];
     
        gtk_init(&argc, &argv);
     
        pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_default_size(GTK_WINDOW(pWindow), 320, 200);
        gtk_window_set_title(GTK_WINDOW(pWindow), "Les GtkTable");
        g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
     
        /* Creation et insertion de la table 3 lignes 2 colonnes */
        pTable=gtk_table_new(3,2,TRUE);
        gtk_container_add(GTK_CONTAINER(pWindow), GTK_WIDGET(pTable));
     
        /* Creation des boutons */
        pButton[0]= gtk_button_new_with_label("Bouton 1");
        pButton[1]= gtk_button_new_with_label("Bouton 2");
        pButton[2]= gtk_button_new_with_label("Bouton 3");
        pButton[3]= gtk_button_new_with_label("Bouton 4");
     
        gtk_signal_connect(GTK_OBJECT(pButton[0]), "clicked", GTK_SIGNAL_FUNC(hello), NULL);
     
        /* Insertion des boutons */
        gtk_table_attach(GTK_TABLE(pTable), pButton[0],
            0, 2, 0, 1,
            GTK_EXPAND | GTK_FILL, GTK_EXPAND,
            20, 0);
        gtk_table_attach_defaults(GTK_TABLE(pTable), pButton[1],
            0, 1, 1, 2);
        gtk_table_attach(GTK_TABLE(pTable), pButton[2],
            1, 2, 1, 2,
            GTK_EXPAND, GTK_EXPAND | GTK_FILL,
            0, 0);
        gtk_table_attach_defaults(GTK_TABLE(pTable), pButton[3],
            0, 2, 2, 3);
     
        gtk_widget_show_all(pWindow);
     
        gtk_main();
     
        return EXIT_SUCCESS;
    }
    le hello.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void hello(GtkWidget * widget, gpointer * data)
    {
    g_print("Vous avez cliqué sur le bouton numero 1\n");
    }
    et le hello.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #ifndef H_HEADER_H
     
    #define H_HEADER_H
    void hello(GtkWidget *widget, gpointer *data);
    #endif
    Merci

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut


    Dans ton hello.c il faut inclure le hello.h dans lequel tu inclus le fichier gtk.h. Ca sera déjà un bon début
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 34
    Par défaut
    Merci j'avais en effet oublié ce détail, j'ai inclu gtk.h dans hello.c c'est bon ?(en tout cas pas d'erreur à la compilation)
    J'ai une question, si je veux rajouter un paramètre a ma fonctione hello, elle deviendra
    void hello(GtkWidget *widget, gpointer *data, int numero);
    Mais ou je dois faire passer cette variable en paramètre ?
    Faut'il le rejouter dans la ligne
    gtk_signal_connect(GTK_OBJECT(Button[0]), "clicked", GTK_SIGNAL_FUNC(hello), NULL);

    Merci

  4. #4
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Personnellement, si j'utilise des types ou des fonctions d'une bibliothèque dans un fichier, j'ajoute les fichiers d'entête qui vont bien. Dans ce contexte, comme les types et GtkWidget sont utilisés à la fois dans hello.c et hello.h, j'inclue gtk.h dans ces deux fichiers, même si formellement l'inclure dans le fichier d'entête (qui lui-même est inclut dans hello.c) suffit.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par YoshioToutou Voir le message
    Merci j'avais en effet oublié ce détail, j'ai inclu gtk.h dans hello.c c'est bon ?(en tout cas pas d'erreur à la compilation)
    J'ai une question, si je veux rajouter un paramètre a ma fonctione hello, elle deviendra
    void hello(GtkWidget *widget, gpointer *data, int numero);
    Mais ou je dois faire passer cette variable en paramètre ?
    Faut'il le rejouter dans la ligne
    gtk_signal_connect(GTK_OBJECT(Button[0]), "clicked", GTK_SIGNAL_FUNC(hello), NULL);

    Merci
    Attention à une chose... Dans GTK+ sont définis des signatures pour tous les callbacks ce qui fait que tu ne pourras pas ajouter un argument supplémentaire à ton callback, le compilateur t'en fera la remarque.

    D'où alors l'argument qu'on trouve dans tous les callback. Tu peux y passer ton argument par ce pointeur ou si tu en passes déjà un, créer une structure qui contiendra toutes les données dont tu as besoin et que tu passeras alors par cet argument !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

Discussions similaires

  1. Cross-compilation application GTK+ pour windows
    Par LM_programme dans le forum Linux
    Réponses: 0
    Dernier message: 04/11/2009, 22h38
  2. probleme de compilation avec GTK+
    Par claire_cartier dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 06/05/2007, 16h26
  3. Dev C++ et compilation séparé
    Par kuja2053 dans le forum Dev-C++
    Réponses: 3
    Dernier message: 21/03/2007, 17h34
  4. Probleme instalation/compilation de GTK+ avec VC++
    Par _LVEB_ dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 23/02/2007, 23h02
  5. Compilation avec GTK+
    Par TheDead Master dans le forum GTK+
    Réponses: 2
    Dernier message: 06/08/2006, 13h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo