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 :

probleme make "#include <glib.h> "


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 115
    Points : 62
    Points
    62
    Par défaut probleme make "#include <glib.h> "
    bonjour je dois insérer #include <glib.h> dans mon projet cependant quand je compile avec mon make cela produit des erreurs de compilation.


    voici mon make :
    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
     
    CC = gcc
    LFLAGS = -g -W -Wall -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wshadow -Wbad-function-cast -Wcast-qual -o `pkg-config --libs glib-2.0`
    CFLAGS = -c -g -W -Wall -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wshadow -Wbad-function-cast -Wcast-qual -Werror `pkg-config --cflags glib-2.0`
    EXEC = serveur
    SRC = $(wildcard *.c)
    OBJ = $(SRC:.c=.o)
     
    all : $(EXEC)
     
    $(EXEC) : $(OBJ)
    	@ $(CC) $(LFLAGS) $@ $^ $(LDFLAGS)
    %.o : %.c
    	@ $(CC) $(CFLAGS) $< -o $*.o
     
    clean:
    	@ rm -f $(OBJ) $(EXEC) *~
     
    mrproper: clean
    	@ rm -f $(EXEC)
    Voici mes erreurs de compilations:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    cc1: warnings being treated as errors
    In file included from /usr/include/glib-2.0/glib/gasyncqueue.h:34,
                     from /usr/include/glib-2.0/glib.h:34,
                     from base.h:22,
                     from connexion.c:12:
    /usr/include/glib-2.0/glib/gthread.h: In function ‘g_once_init_enter’:
    /usr/include/glib-2.0/glib/gthread.h:348: error: cast discards qualifiers from pointer target type
    make: *** [connexion.o] Erreur 1
    je ne trouve pas mon erreur, pouvez vous m'aider sur ce point?

    Merci de votre compréhension.

  2. #2
    Membre actif Avatar de quetzacoatl
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 168
    Points : 223
    Points
    223
    Par défaut
    Où crées-tu ta cible LD_FLAGS?

    @ $(CC) $(LFLAGS) $@ $^ $(LDFLAGS)

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par l'unique Voir le message
    Voici mes erreurs de compilations:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    cc1: warnings being treated as errors
    In file included from /usr/include/glib-2.0/glib/gasyncqueue.h:34,
                     from /usr/include/glib-2.0/glib.h:34,
                     from base.h:22,
                     from connexion.c:12:
    /usr/include/glib-2.0/glib/gthread.h: In function ‘g_once_init_enter’:
    /usr/include/glib-2.0/glib/gthread.h:348: error: cast discards qualifiers from pointer target type
    make: *** [connexion.o] Erreur 1
    En général ce genre d'erreur survient quand on n'a pas mis le bon define dans les flags...

    Va voir par quoi (par quels ifdef) est encadré la définition citée ligne 348 de gthreads.h...

    Et regarde autour.. Il doit y avoir des ifdef ou ifeq .. else..

    Il faudra mettre dans les flags le bon -D ....
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 115
    Points : 62
    Points
    62
    Par défaut
    les erreurs en recompilants sont les suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    cc1: warnings being treated as errors
    In file included from /usr/include/glib-2.0/glib/gasyncqueue.h:34,
                     from /usr/include/glib-2.0/glib.h:34,
                     from base.h:22,
                     from serveur_POKER.h:1,
                     from main.c:40:
    /usr/include/glib-2.0/glib/gthread.h: In function ‘g_once_init_enter’:
    /usr/include/glib-2.0/glib/gthread.h:348: error: cast discards qualifiers from pointer target type
    In file included from main.c:40:
    serveur_POKER.h: At top level:
    serveur_POKER.h:22: error: expected declaration specifiers or ‘...’ before ‘client_info’
    make: *** [main.o] Erreur 1
    la ligne 40 du main correspond à #include "serveur_POKER.h"
    la ligne 1 de serveur_POKER.h correpond à #include "base.h"
    la ligne 22 de base.h correspond à #include <glib.h>

    voici base.h:
    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
     
    #ifndef __BASE_H_
    #define __BASE_H_
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <sys/wait.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <netdb.h>
    #include <unistd.h>
    #include <errno.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <ctype.h>
    #include <time.h>
    #include <sys/stat.h>
    #include <inttypes.h>
    #include <glib.h>
     
     
    #define max(a,b)  ((a) >= (b) ? (a) : (b))
     
     
    #define MAXBUF 1024
     
    #endif

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    non..

    Je parle de ceci :

    /usr/include/glib-2.0/glib/gthread.h: In function ‘g_once_init_enter’:
    /usr/include/glib-2.0/glib/gthread.h:348: error: cast discards qualifiers from pointer
    Il faut aller regarder dans /usr/include/glib-2.0/glib/gthread.h autour de la ligne 348...

    et je vois que c'est lié aux (sockets ?) asynchrones .. :

    from /usr/include/glib-2.0/glib/gasyncqueue.h:34,
    Il doit sans doute y avoir un ifdef dont le define n'est pas précisé dans tes flags de compilation...

    Entre le gthread.h ligne 348 et le gasyncqueue.h ligne 34..

    Quelque part autour de ces 2 lignes..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 115
    Points : 62
    Points
    62
    Par défaut
    bonjour j'ai regarder autour de /usr/include/glib-2.0/glib/gthread.h que voici:
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
     
    /* GLIB - Library of useful routines for C programming
     * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
     *
     * This library is free software; you can redistribute it and/or
     * modify it under the terms of the GNU Lesser General Public
     * License as published by the Free Software Foundation; either
     * version 2 of the License, or (at your option) any later version.
     *
     * This library is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
     * Lesser General Public License for more details.
     *
     * You should have received a copy of the GNU Lesser General Public
     * License along with this library; if not, write to the
     * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
     * Boston, MA 02111-1307, USA.
     */
     
    /*
     * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
     * file for a list of people on the GLib Team.  See the ChangeLog
     * files for a list of changes.  These files are distributed with
     * GLib at ftp://ftp.gtk.org/pub/gtk/.
     */
     
    #if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
    #error "Only <glib.h> can be included directly."
    #endif
     
    #ifndef __G_THREAD_H__
    #define __G_THREAD_H__
     
    #include <glib/gerror.h>
    #include <glib/gtypes.h>
    #include <glib/gutils.h>        /* for G_INLINE_FUNC */
    #include <glib/gatomic.h>       /* for g_atomic_pointer_get */
     
    G_BEGIN_DECLS
     
    /* GLib Thread support
     */
     
    extern GQuark g_thread_error_quark (void);
    #define G_THREAD_ERROR g_thread_error_quark ()
     
    typedef enum
    {
      G_THREAD_ERROR_AGAIN /* Resource temporarily unavailable */
    } GThreadError;
     
    typedef gpointer (*GThreadFunc) (gpointer data);
     
    typedef enum
    {
      G_THREAD_PRIORITY_LOW,
      G_THREAD_PRIORITY_NORMAL,
      G_THREAD_PRIORITY_HIGH,
      G_THREAD_PRIORITY_URGENT
    } GThreadPriority;
     
    typedef struct _GThread         GThread;
    struct  _GThread
    {
      /*< private >*/
      GThreadFunc func;
      gpointer data;
      gboolean joinable;
      GThreadPriority priority;
    };
     
    typedef struct _GMutex          GMutex;
    typedef struct _GCond           GCond;
    typedef struct _GPrivate        GPrivate;
    typedef struct _GStaticPrivate  GStaticPrivate;
     
    typedef struct _GThreadFunctions GThreadFunctions;
    struct _GThreadFunctions
    {
      GMutex*  (*mutex_new)           (void);
      void     (*mutex_lock)          (GMutex               *mutex);
      gboolean (*mutex_trylock)       (GMutex               *mutex);
      void     (*mutex_unlock)        (GMutex               *mutex);
      void     (*mutex_free)          (GMutex               *mutex);
      GCond*   (*cond_new)            (void);
      void     (*cond_signal)         (GCond                *cond);
      void     (*cond_broadcast)      (GCond                *cond);
      void     (*cond_wait)           (GCond                *cond,
                                       GMutex               *mutex);
      gboolean (*cond_timed_wait)     (GCond                *cond,
                                       GMutex               *mutex,
                                       GTimeVal             *end_time);
      void      (*cond_free)          (GCond                *cond);
      GPrivate* (*private_new)        (GDestroyNotify        destructor);
      gpointer  (*private_get)        (GPrivate             *private_key);
      void      (*private_set)        (GPrivate             *private_key,
                                       gpointer              data);
      void      (*thread_create)      (GThreadFunc           func,
                                       gpointer              data,
                                       gulong                stack_size,
                                       gboolean              joinable,
                                       gboolean              bound,
                                       GThreadPriority       priority,
                                       gpointer              thread,
                                       GError              **error);
      void      (*thread_yield)       (void);
      void      (*thread_join)        (gpointer              thread);
      void      (*thread_exit)        (void);
      void      (*thread_set_priority)(gpointer              thread,
                                       GThreadPriority       priority);
      void      (*thread_self)        (gpointer              thread);
      gboolean  (*thread_equal)       (gpointer              thread1,
    				   gpointer              thread2);
    };
     
    GLIB_VAR GThreadFunctions       g_thread_functions_for_glib_use;
    GLIB_VAR gboolean               g_thread_use_default_impl;
    GLIB_VAR gboolean               g_threads_got_initialized;
     
    GLIB_VAR guint64   (*g_thread_gettime) (void);
     
    /* initializes the mutex/cond/private implementation for glib, might
     * only be called once, and must not be called directly or indirectly
     * from another glib-function, e.g. as a callback.
     */
    void    g_thread_init   (GThreadFunctions       *vtable);
     
    /* Errorcheck mutexes. If you define G_ERRORCHECK_MUTEXES, then all
     * mutexes will check for re-locking and re-unlocking */
     
    /* Initialize thread system with errorcheck mutexes. vtable must be
     * NULL. Do not call directly. Use #define G_ERRORCHECK_MUTEXES
     * instead.
     */
    void    g_thread_init_with_errorcheck_mutexes (GThreadFunctions* vtable);
     
    /* Checks if thread support is initialized.  Identical to the
     * g_thread_supported macro but provided for language bindings.
     */
    gboolean g_thread_get_initialized (void);
     
    /* A random number to recognize debug calls to g_mutex_... */
    #define G_MUTEX_DEBUG_MAGIC 0xf8e18ad7
     
    #ifdef G_ERRORCHECK_MUTEXES
    #define g_thread_init(vtable) g_thread_init_with_errorcheck_mutexes (vtable)
    #endif
     
    /* internal function for fallback static mutex implementation */
    GMutex* g_static_mutex_get_mutex_impl   (GMutex **mutex);
     
    #define g_static_mutex_get_mutex_impl_shortcut(mutex) \
      (g_atomic_pointer_get (mutex) ? *(mutex) : \
       g_static_mutex_get_mutex_impl (mutex))
     
    /* shorthands for conditional and unconditional function calls */
     
    #define G_THREAD_UF(op, arglist)					\
        (*g_thread_functions_for_glib_use . op) arglist
    #define G_THREAD_CF(op, fail, arg)					\
        (g_thread_supported () ? G_THREAD_UF (op, arg) : (fail))
    #define G_THREAD_ECF(op, fail, mutex, type)				\
        (g_thread_supported () ? 						\
          ((type(*)(GMutex*, const gulong, gchar const*))			\
          (*g_thread_functions_for_glib_use . op))				\
         (mutex, G_MUTEX_DEBUG_MAGIC, G_STRLOC) : (fail))
     
    #ifndef G_ERRORCHECK_MUTEXES
    # define g_mutex_lock(mutex)						\
        G_THREAD_CF (mutex_lock,     (void)0, (mutex))
    # define g_mutex_trylock(mutex)						\
        G_THREAD_CF (mutex_trylock,  TRUE,    (mutex))
    # define g_mutex_unlock(mutex)						\
        G_THREAD_CF (mutex_unlock,   (void)0, (mutex))
    # define g_mutex_free(mutex)						\
        G_THREAD_CF (mutex_free,     (void)0, (mutex))
    # define g_cond_wait(cond, mutex)					\
        G_THREAD_CF (cond_wait,      (void)0, (cond, mutex))
    # define g_cond_timed_wait(cond, mutex, abs_time)			\
        G_THREAD_CF (cond_timed_wait, TRUE,   (cond, mutex, abs_time))
    #else /* G_ERRORCHECK_MUTEXES */
    # define g_mutex_lock(mutex)						\
        G_THREAD_ECF (mutex_lock,    (void)0, (mutex), void)
    # define g_mutex_trylock(mutex)						\
        G_THREAD_ECF (mutex_trylock, TRUE,    (mutex), gboolean)
    # define g_mutex_unlock(mutex)						\
        G_THREAD_ECF (mutex_unlock,  (void)0, (mutex), void)
    # define g_mutex_free(mutex)						\
        G_THREAD_ECF (mutex_free,    (void)0, (mutex), void)
    # define g_cond_wait(cond, mutex)					\
        (g_thread_supported () ? ((void(*)(GCond*, GMutex*, gulong, gchar*))\
          g_thread_functions_for_glib_use.cond_wait)			\
            (cond, mutex, G_MUTEX_DEBUG_MAGIC, G_STRLOC) : (void) 0)
    # define g_cond_timed_wait(cond, mutex, abs_time)			\
        (g_thread_supported () ?						\
          ((gboolean(*)(GCond*, GMutex*, GTimeVal*, gulong, gchar*))	\
            g_thread_functions_for_glib_use.cond_timed_wait)		\
              (cond, mutex, abs_time, G_MUTEX_DEBUG_MAGIC, G_STRLOC) : TRUE)
    #endif /* G_ERRORCHECK_MUTEXES */
     
    #if defined(G_THREADS_ENABLED) && defined(G_THREADS_MANDATORY)
    #define g_thread_supported()     1
    #else
    #define g_thread_supported()    (g_threads_got_initialized)
    #endif
    #define g_mutex_new()            G_THREAD_UF (mutex_new,      ())
    #define g_cond_new()             G_THREAD_UF (cond_new,       ())
    #define g_cond_signal(cond)      G_THREAD_CF (cond_signal,    (void)0, (cond))
    #define g_cond_broadcast(cond)   G_THREAD_CF (cond_broadcast, (void)0, (cond))
    #define g_cond_free(cond)        G_THREAD_CF (cond_free,      (void)0, (cond))
    #define g_private_new(destructor) G_THREAD_UF (private_new, (destructor))
    #define g_private_get(private_key) G_THREAD_CF (private_get, \
                                                    ((gpointer)private_key), \
                                                    (private_key))
    #define g_private_set(private_key, value) G_THREAD_CF (private_set, \
                                                           (void) (private_key = \
                                                            (GPrivate*) (value)), \
                                                           (private_key, value))
    #define g_thread_yield()              G_THREAD_CF (thread_yield, (void)0, ())
     
    #define g_thread_create(func, data, joinable, error)			\
      (g_thread_create_full (func, data, 0, joinable, FALSE, 		\
                             G_THREAD_PRIORITY_NORMAL, error))
     
    GThread* g_thread_create_full  (GThreadFunc            func,
                                    gpointer               data,
                                    gulong                 stack_size,
                                    gboolean               joinable,
                                    gboolean               bound,
                                    GThreadPriority        priority,
                                    GError               **error);
    GThread* g_thread_self         (void);
    void     g_thread_exit         (gpointer               retval);
    gpointer g_thread_join         (GThread               *thread);
     
    void     g_thread_set_priority (GThread               *thread,
                                    GThreadPriority        priority);
     
    /* GStaticMutexes can be statically initialized with the value
     * G_STATIC_MUTEX_INIT, and then they can directly be used, that is
     * much easier, than having to explicitly allocate the mutex before
     * use
     */
    #define g_static_mutex_lock(mutex) \
        g_mutex_lock (g_static_mutex_get_mutex (mutex))
    #define g_static_mutex_trylock(mutex) \
        g_mutex_trylock (g_static_mutex_get_mutex (mutex))
    #define g_static_mutex_unlock(mutex) \
        g_mutex_unlock (g_static_mutex_get_mutex (mutex))
    void g_static_mutex_init (GStaticMutex *mutex);
    void g_static_mutex_free (GStaticMutex *mutex);
     
    struct _GStaticPrivate
    {
      /*< private >*/
      guint index;
    };
    #define G_STATIC_PRIVATE_INIT { 0 }
    void     g_static_private_init           (GStaticPrivate   *private_key);
    gpointer g_static_private_get            (GStaticPrivate   *private_key);
    void     g_static_private_set            (GStaticPrivate   *private_key,
    					  gpointer          data,
    					  GDestroyNotify    notify);
    void     g_static_private_free           (GStaticPrivate   *private_key);
     
    typedef struct _GStaticRecMutex GStaticRecMutex;
    struct _GStaticRecMutex
    {
      /*< private >*/
      GStaticMutex mutex;
      guint depth;
      GSystemThread owner;
    };
     
    #define G_STATIC_REC_MUTEX_INIT { G_STATIC_MUTEX_INIT }
    void     g_static_rec_mutex_init        (GStaticRecMutex *mutex);
    void     g_static_rec_mutex_lock        (GStaticRecMutex *mutex);
    gboolean g_static_rec_mutex_trylock     (GStaticRecMutex *mutex);
    void     g_static_rec_mutex_unlock      (GStaticRecMutex *mutex);
    void     g_static_rec_mutex_lock_full   (GStaticRecMutex *mutex,
                                             guint            depth);
    guint    g_static_rec_mutex_unlock_full (GStaticRecMutex *mutex);
    void     g_static_rec_mutex_free        (GStaticRecMutex *mutex);
     
    typedef struct _GStaticRWLock GStaticRWLock;
    struct _GStaticRWLock
    {
      /*< private >*/
      GStaticMutex mutex;
      GCond *read_cond;
      GCond *write_cond;
      guint read_counter;
      gboolean have_writer;
      guint want_to_read;
      guint want_to_write;
    };
     
    #define G_STATIC_RW_LOCK_INIT { G_STATIC_MUTEX_INIT, NULL, NULL, 0, FALSE, 0, 0 }
     
    void      g_static_rw_lock_init           (GStaticRWLock* lock);
    void      g_static_rw_lock_reader_lock    (GStaticRWLock* lock);
    gboolean  g_static_rw_lock_reader_trylock (GStaticRWLock* lock);
    void      g_static_rw_lock_reader_unlock  (GStaticRWLock* lock);
    void      g_static_rw_lock_writer_lock    (GStaticRWLock* lock);
    gboolean  g_static_rw_lock_writer_trylock (GStaticRWLock* lock);
    void      g_static_rw_lock_writer_unlock  (GStaticRWLock* lock);
    void      g_static_rw_lock_free           (GStaticRWLock* lock);
     
    void	  g_thread_foreach         	  (GFunc    	  thread_func,
    					   gpointer 	  user_data);
     
    typedef enum
    {
      G_ONCE_STATUS_NOTCALLED,
      G_ONCE_STATUS_PROGRESS,
      G_ONCE_STATUS_READY  
    } GOnceStatus;
     
    typedef struct _GOnce GOnce;
    struct _GOnce
    {
      volatile GOnceStatus status;
      volatile gpointer retval;
    };
     
    #define G_ONCE_INIT { G_ONCE_STATUS_NOTCALLED, NULL }
     
    gpointer g_once_impl (GOnce *once, GThreadFunc func, gpointer arg);
     
    #ifdef G_ATOMIC_OP_MEMORY_BARRIER_NEEDED
    # define g_once(once, func, arg) g_once_impl ((once), (func), (arg))
    #else /* !G_ATOMIC_OP_MEMORY_BARRIER_NEEDED*/
    # define g_once(once, func, arg) \
      (((once)->status == G_ONCE_STATUS_READY) ? \
       (once)->retval : \
       g_once_impl ((once), (func), (arg)))
    #endif /* G_ATOMIC_OP_MEMORY_BARRIER_NEEDED */
     
    /* initialize-once guards, keyed by value_location */
    G_INLINE_FUNC gboolean  g_once_init_enter       (volatile gsize *value_location);
    gboolean                g_once_init_enter_impl  (volatile gsize *value_location);
    void                    g_once_init_leave       (volatile gsize *value_location,
                                                     gsize           initialization_value);
    #if defined (G_CAN_INLINE) || defined (__G_THREAD_C__)
    G_INLINE_FUNC gboolean
    g_once_init_enter (volatile gsize *value_location)
    {
      if G_LIKELY ((gpointer) g_atomic_pointer_get (value_location) != NULL)
        return FALSE;
      else
        return g_once_init_enter_impl (value_location);
    }
    #endif /* G_CAN_INLINE || __G_THREAD_C__ */
     
    /* these are some convenience macros that expand to nothing if GLib
     * was configured with --disable-threads. for using StaticMutexes,
     * you define them with G_LOCK_DEFINE_STATIC (name) or G_LOCK_DEFINE (name)
     * if you need to export the mutex. With G_LOCK_EXTERN (name) you can
     * declare such an globally defined lock. name is a unique identifier
     * for the protected varibale or code portion. locking, testing and
     * unlocking of such mutexes can be done with G_LOCK(), G_UNLOCK() and
     * G_TRYLOCK() respectively.
     */
    extern void glib_dummy_decl (void);
    #define G_LOCK_NAME(name)               g__ ## name ## _lock
    #ifdef  G_THREADS_ENABLED
    #  define G_LOCK_DEFINE_STATIC(name)    static G_LOCK_DEFINE (name)
    #  define G_LOCK_DEFINE(name)           \
        GStaticMutex G_LOCK_NAME (name) = G_STATIC_MUTEX_INIT
    #  define G_LOCK_EXTERN(name)           extern GStaticMutex G_LOCK_NAME (name)
     
    #  ifdef G_DEBUG_LOCKS
    #    define G_LOCK(name)                G_STMT_START{             \
            g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG,                   \
                   "file %s: line %d (%s): locking: %s ",             \
                   __FILE__,        __LINE__, G_STRFUNC,              \
                   #name);                                            \
            g_static_mutex_lock (&G_LOCK_NAME (name));                \
         }G_STMT_END
    #    define G_UNLOCK(name)              G_STMT_START{             \
            g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG,                   \
                   "file %s: line %d (%s): unlocking: %s ",           \
                   __FILE__,        __LINE__, G_STRFUNC,              \
                   #name);                                            \
           g_static_mutex_unlock (&G_LOCK_NAME (name));               \
         }G_STMT_END
    #    define G_TRYLOCK(name)                                       \
            (g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG,                  \
                   "file %s: line %d (%s): try locking: %s ",         \
                   __FILE__,        __LINE__, G_STRFUNC,              \
                   #name), g_static_mutex_trylock (&G_LOCK_NAME (name)))
    #  else  /* !G_DEBUG_LOCKS */
    #    define G_LOCK(name) g_static_mutex_lock       (&G_LOCK_NAME (name))
    #    define G_UNLOCK(name) g_static_mutex_unlock   (&G_LOCK_NAME (name))
    #    define G_TRYLOCK(name) g_static_mutex_trylock (&G_LOCK_NAME (name))
    #  endif /* !G_DEBUG_LOCKS */
    #else   /* !G_THREADS_ENABLED */
    #  define G_LOCK_DEFINE_STATIC(name)    extern void glib_dummy_decl (void)
    #  define G_LOCK_DEFINE(name)           extern void glib_dummy_decl (void)
    #  define G_LOCK_EXTERN(name)           extern void glib_dummy_decl (void)
    #  define G_LOCK(name)
    #  define G_UNLOCK(name)
    #  define G_TRYLOCK(name)               (TRUE)
    #endif  /* !G_THREADS_ENABLED */
     
    G_END_DECLS
     
    #endif /* __G_THREAD_H__ */
    la ligne 348 correspond à "if G_LIKELY ((gpointer) g_atomic_pointer_get (value_location) != NULL)"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #if defined (G_CAN_INLINE) || defined (__G_THREAD_C__)
    G_INLINE_FUNC gboolean
    g_once_init_enter (volatile gsize *value_location)
    {
      if G_LIKELY ((gpointer) g_atomic_pointer_get (value_location) != NULL)
        return FALSE;
      else
        return g_once_init_enter_impl (value_location);
    }
    #endif /* G_CAN_INLINE || __G_THREAD_C__ */
    Voici le fichier gasyncqueue.h
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
     
    /* GLIB - Library of useful routines for C programming
     * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
     *
     * This library is free software; you can redistribute it and/or
     * modify it under the terms of the GNU Lesser General Public
     * License as published by the Free Software Foundation; either
     * version 2 of the License, or (at your option) any later version.
     *
     * This library is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
     * Lesser General Public License for more details.
     *
     * You should have received a copy of the GNU Lesser General Public
     * License along with this library; if not, write to the
     * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
     * Boston, MA 02111-1307, USA.
     */
     
    /*
     * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
     * file for a list of people on the GLib Team.  See the ChangeLog
     * files for a list of changes.  These files are distributed with
     * GLib at ftp://ftp.gtk.org/pub/gtk/.
     */
     
    #if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
    #error "Only <glib.h> can be included directly."
    #endif
     
    #ifndef __G_ASYNCQUEUE_H__
    #define __G_ASYNCQUEUE_H__
     
    #include <glib/gthread.h>
     
    G_BEGIN_DECLS
     
    typedef struct _GAsyncQueue GAsyncQueue;
     
    /* Asyncronous Queues, can be used to communicate between threads */
     
    /* Get a new GAsyncQueue with the ref_count 1 */
    GAsyncQueue*  g_async_queue_new                 (void);
     
    GAsyncQueue*  g_async_queue_new_full            (GDestroyNotify item_free_func);
     
    /* Lock and unlock a GAsyncQueue. All functions lock the queue for
     * themselves, but in certain cirumstances you want to hold the lock longer,
     * thus you lock the queue, call the *_unlocked functions and unlock it again.
     */
    void         g_async_queue_lock                 (GAsyncQueue      *queue);
    void         g_async_queue_unlock               (GAsyncQueue      *queue);
     
    /* Ref and unref the GAsyncQueue. */
    GAsyncQueue* g_async_queue_ref                  (GAsyncQueue      *queue);
    void         g_async_queue_unref                (GAsyncQueue      *queue);
     
    #ifndef G_DISABLE_DEPRECATED
    /* You don't have to hold the lock for calling *_ref and *_unref anymore. */
    void         g_async_queue_ref_unlocked         (GAsyncQueue      *queue);
    void         g_async_queue_unref_and_unlock     (GAsyncQueue      *queue);
    #endif /* !G_DISABLE_DEPRECATED */
     
    /* Push data into the async queue. Must not be NULL. */
    void         g_async_queue_push                 (GAsyncQueue      *queue,
    						 gpointer          data);
    void         g_async_queue_push_unlocked        (GAsyncQueue      *queue,
    						 gpointer          data);
     
    void         g_async_queue_push_sorted          (GAsyncQueue      *queue,
    						 gpointer          data,
    						 GCompareDataFunc  func,
    						 gpointer          user_data);
    void         g_async_queue_push_sorted_unlocked (GAsyncQueue      *queue,
    						 gpointer          data,
    						 GCompareDataFunc  func,
    						 gpointer          user_data);
     
    /* Pop data from the async queue. When no data is there, the thread is blocked
     * until data arrives.
     */
    gpointer     g_async_queue_pop                  (GAsyncQueue      *queue);
    gpointer     g_async_queue_pop_unlocked         (GAsyncQueue      *queue);
     
    /* Try to pop data. NULL is returned in case of empty queue. */
    gpointer     g_async_queue_try_pop              (GAsyncQueue      *queue);
    gpointer     g_async_queue_try_pop_unlocked     (GAsyncQueue      *queue);
     
     
     
    /* Wait for data until at maximum until end_time is reached. NULL is returned
     * in case of empty queue. 
     */
    gpointer     g_async_queue_timed_pop            (GAsyncQueue      *queue,
    						 GTimeVal         *end_time);
    gpointer     g_async_queue_timed_pop_unlocked   (GAsyncQueue      *queue,
    						 GTimeVal         *end_time);
     
    /* Return the length of the queue. Negative values mean that threads
     * are waiting, positve values mean that there are entries in the
     * queue. Actually this function returns the length of the queue minus
     * the number of waiting threads, g_async_queue_length == 0 could also
     * mean 'n' entries in the queue and 'n' thread waiting. Such can
     * happen due to locking of the queue or due to scheduling. 
     */
    gint         g_async_queue_length               (GAsyncQueue      *queue);
    gint         g_async_queue_length_unlocked      (GAsyncQueue      *queue);
    void         g_async_queue_sort                 (GAsyncQueue      *queue,
    						 GCompareDataFunc  func,
    						 gpointer          user_data);
    void         g_async_queue_sort_unlocked        (GAsyncQueue      *queue,
    						 GCompareDataFunc  func,
    						 gpointer          user_data);
     
    /* Private API */
    GMutex*      _g_async_queue_get_mutex           (GAsyncQueue      *queue);
     
    G_END_DECLS
     
    #endif /* __G_ASYNCQUEUE_H__ */
    la ligne 34 correspond à " #include <glib/gthread.h>" dans le fichier gasyncqueue.h
    je n'arrive pas a voir d'où peut venir cette erreur.

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    ok...

    C'est parce que tu traites les warning comme erreurs, je pense...

    Comme la délcaration d'appel de la fonction fait un cast d'un type qui doit être défini comme un pointeur d'après son nom, au lieu de t'afficher un warning du style "caution. cast can hide ...", il te fait une erreur...

    Peut-être aussi compile-tu en C99, qui vis-à-vis des casts est beaucoup plus méchant...

    Je ne suis pas familier avec la librairie en question, mais essaye-voir de ne pas traiter les warnings en erreur...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 115
    Points : 62
    Points
    62
    Par défaut
    bonjour, le problème c'est qu'on ma imposé ces options de compilations, je voudrais savoir si il y a une possibilité de rajouter des options à mon make afin que je puisse utiliser Glist implémentée dans glib. ("glib.h"). Ceci afin de gérer les clients sous forme de liste.

    Voici mon make:
    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
     
     
    CC = gcc
    LFLAGS = -g -W -Wall -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wshadow -Wbad-function-cast -Wcast-qual -o `pkg-config --libs glib-2.0`
    CFLAGS = -c -g -W -Wall -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wshadow -Wbad-function-cast -Wcast-qual -Werror `pkg-config --cflags glib-2.0`
    EXEC = serveur
    SRC = $(wildcard *.c)
    OBJ = $(SRC:.c=.o)
     
    all : $(EXEC)
     
    $(EXEC) : $(OBJ)
    	@ $(CC) $(LFLAGS) $@ $^ $(LDFLAGS)
    %.o : %.c
    	@ $(CC) $(CFLAGS) $< -o $*.o
     
    clean:
    	@ rm -f $(OBJ) $(EXEC) *~
     
    mrproper: clean
    	@ rm -f $(EXEC)


    Merci de votre compréhension.

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    je pense que ton problème vient du flag :

    -Wcast-qual
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 115
    Points : 62
    Points
    62
    Par défaut
    bonjour,
    lorsque je supprime "-Wcast-qual " dans le makefile, il ne trouve pas l'exécutable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    gcc: serveur: Aucun fichier ou dossier de ce type
    make: *** [serveur] Erreur 1
    faudrat-il pas règler l'erreur de cast dans glib ...???

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 115
    Points : 62
    Points
    62
    Par défaut
    en effet certaines de mes options de compilation , produisent cette erreur quand j'utilise cette bibliothèques... je vais les supprimer, merci encore de votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WriteExcel] REQUIRE ou INCLUDE
    Par JmL40 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 25/06/2007, 14h08
  2. probleme avec le include
    Par cooltype dans le forum JSF
    Réponses: 6
    Dernier message: 02/05/2007, 17h47
  3. [Système] Probleme $_POST et include?
    Par Death83 dans le forum Langage
    Réponses: 8
    Dernier message: 30/09/2006, 22h32
  4. [PDF] Probleme avec les include
    Par Delphy113 dans le forum Bibliothèques et frameworks
    Réponses: 13
    Dernier message: 25/08/2006, 09h29
  5. Problème dans les includes
    Par Machjaghjolu dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 14/01/2006, 15h10

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