Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 07-08-2018 15:24:05

gargamel79
Membre
Lieu : Bressuire
Distrib. : wheezy jessie Stretch
Noyau : 4.9.0-6-686-pae
(G)UI : xfce ou mate
Inscription : 15-11-2009

[Résolu] bizarre, bizarre ces inclusions

Il semble y avoir un bug par rapport aux inclusions (stretch, 4.9.0-6-amd64)...
Dans mon source:
#include <termios.h>
Dans mon code :
cfmakeraw (&new_term_settings);

compilation:
warning: implicit declaration of function ‘cfmakeraw’ [-Wimplicit-function-declaration]
Nouvelle compile avec:
gcc -Wall -o $1 -g -O0 $chemin/$1.c -v 2> toto

voici le résultat (recherche dans toto avec grep):
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-linux-gnu/6/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.

Et maintenant vi /usr/include/termios.h
  recherche de cfmakeraw
  -> extern void cfmakeraw (struct termios *__termios_p) __THROW;

Et la compilation ne trouve pas le prototype !?!?
Ajout dans mon source de :
extern void cfmakeraw (struct termios *__termios_p) __THROW;
Ça compile, sans erreur de lien !

Vous avez dit bizarre ?

Dernière modification par gargamel79 (13-08-2018 10:36:47)

Hors ligne

#2 07-08-2018 16:36:57

MicP
Membre
Inscription : 29-02-2016

Re : [Résolu] bizarre, bizarre ces inclusions

Bonjour


cfmakeraw (&new_term_settings);


"…implicit declaration of function…" <=> Tu as oublié de spécifier le type de valeur que la fonction devra retourner (ou void si aucune)

=>

void cfmakeraw (&new_term_settings);



=======
Ou alors, dans ton fichier source :

#define _BSD_SOURCE
#define _DEFAULT_SOURCE
#include <termios.h>


Voir l'extrait suivant provenant de : debian stretch -> manpages-dev -> TERMIOS


Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

cfsetspeed(), cfmakeraw():
Since glibc 2.19:
_DEFAULT_SOURCE
Glibc 2.19 and earlier:
_BSD_SOURCE

Dernière modification par MicP (07-08-2018 17:04:30)

Hors ligne

#3 07-08-2018 17:06:55

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] bizarre, bizarre ces inclusions

MicP a écrit :

Tu as oublié de spécifier le type de valeur que la fonction devra retourner


Si je ne m'abuse il s'agit d'un appel de fonction, pas d'une déclaration. Il n'y a donc rien à spécifier.

Hors ligne

#4 07-08-2018 17:12:01

MicP
Membre
Inscription : 29-02-2016

Re : [Résolu] bizarre, bizarre ces inclusions

C'est bien ce que l'on pouvait croire en lisant le code source,
mais vu qu'il lui manquait la déclaration de cette fonction,
le compilateur ne l'avait pas compris comme ça.

stackoverflow : cfmakeraw implicit declaration error

Dernière modification par MicP (07-08-2018 17:25:22)

Hors ligne

#5 07-08-2018 17:29:35

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] bizarre, bizarre ces inclusions

La question initiale étant : pourquoi le compilo n'a pas vu la déclaration malgré l'include ? Problème de path ?

Hors ligne

#6 07-08-2018 17:51:21

MicP
Membre
Inscription : 29-02-2016

Re : [Résolu] bizarre, bizarre ces inclusions

Je n'ai pas tout lu dans cette page
mais il me semble comprendre que ce sont des macros du compilateur
qui sont activées ou/et désactivées par défaut en fonction de l'évolution de glibc
et certaines de ces macros "activent" ou/et "désactivent" certaines déclarations de fonction.

Hors ligne

#7 09-08-2018 11:27:41

gargamel79
Membre
Lieu : Bressuire
Distrib. : wheezy jessie Stretch
Noyau : 4.9.0-6-686-pae
(G)UI : xfce ou mate
Inscription : 15-11-2009

Re : [Résolu] bizarre, bizarre ces inclusions

Cela doit être quelque chose comme ça, j'utilise par par ailleurs des choses comme:
struct termios new_term_settings;
Et le compilo. ne me fait pas les gros yeux pour le type termios !
Merci pour vos réponses.

Hors ligne

#8 13-08-2018 10:35:56

gargamel79
Membre
Lieu : Bressuire
Distrib. : wheezy jessie Stretch
Noyau : 4.9.0-6-686-pae
(G)UI : xfce ou mate
Inscription : 15-11-2009

Re : [Résolu] bizarre, bizarre ces inclusions

Avec :
Debian GNU/Linux 8 (jessie)
gcc version 4.9.2 (Debian 4.9.2-10+deb8u1)
L'inclusion du prototype se fait normalement...

le problème  viendrait de gcc 6.3.0

Hors ligne

Pied de page des forums