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

Systèmes de compilation Discussion :

configure pour C++ sans les header du langage C


Sujet :

Systèmes de compilation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    développeur à la maison
    Inscrit en
    Septembre 2006
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : développeur à la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 415
    Billets dans le blog
    16
    Par défaut configure pour C++ sans les header du langage C
    Bonjour,

    ça compile quand-même, mais...
    configure.ac:
    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
    #                                               -*- Autoconf -*-
    # Process this file with autoconf to produce a configure script.
     
    AC_PREREQ([2.71])
    AC_INIT([hello], [1.0], [matser@matser.lautre.net])
    AM_INIT_AUTOMAKE
    AC_CONFIG_SRCDIR([hello.cpp])
    AC_CONFIG_HEADERS([config.h])
    AC_LANG([C++])
    # Checks for programs.
    AC_PROG_CXX
     
    # Checks for libraries.
     
    # Checks for header files.
    AC_CHECK_HEADERS([iostream])
    # Checks for typedefs, structures, and compiler characteristics.
     
    # Checks for library functions.
    AC_CONFIG_FILES([Makefile])
     
    AC_OUTPUT
    le problème est que configure donne entre autres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    checking for stdio.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for strings.h... yes
    checking for sys/stat.h... yes
    checking for sys/types.faire
    checking for unistd.h... yes
    comment faire pour que configure ne vérifie pas ces headers du C?

    quelqu'un a une idée?

  2. #2
    Membre éclairé

    Homme Profil pro
    développeur à la maison
    Inscrit en
    Septembre 2006
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : développeur à la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 415
    Billets dans le blog
    16
    Par défaut
    j'ai peut-être oublié de préciser que le programme à compiler est en C++

    une idée ?

  3. #3
    Membre Expert
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    683
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 95
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 683
    Par défaut
    Salut,

    Je préviens que mon expérience d'Autoconf est inexistante, juste quelques passages de paramètres à Configure et c'est tout.
    Mais ce que je peux écrire, c'est que certains entêtes C sont requis par le C++, et d'autres par l'environnement hôte.
    Cela dit, ce n'est pas pour autant que ces tests sont nécessaires, et ça aurait été utile de préciser quelle macro exactement les déclenche.
    Qu'à cela ne tienne, j'ai désigné un suspect (doublement) idéal, AC_CHECK_HEADERS(), et RTFMé la doc

    D'après elle donc :

    AC_CHECK_HEADERS([xyz])

    est étendu comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    AC_CHECK_HEADERS([xyz.h], [], [],
    [AC_INCLUDES_DEFAULT[
    #ifdef HAVE_XYZ_H
    # include <xyz.h>
    #endif
    ]])
    C'est AC_INCLUDES_DEFAULT qui déclenche ces tests.

    En étant explicite, il ne devrait plus y en avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    AC_CHECK_HEADERS([xyz.h], [], [],
    [[
    #ifdef HAVE_XYZ_H
    # include <xyz.h>
    #endif
    ]])


    Seconde chose, le suspect avec du "iostream" dans la poche, c'était très curieux.
    Parce qu'en fait, soit le compilateur est conforme au standard, soit il ne l'est pas. Ça tombe bien, Autoconf a une macro pour le vérifier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional])
    ou AX_CXX_COMPILE_STDCXX_[11|14|...]([ext|noext], [mandatory|optional])
    Maintenant que GCC est bien avancé dans les modules, un simple "import std" (C++23) remplace déjà les "#includes<...>" habituels.
    Et comme il est question d'avancement, pour vérifier la disponibilité de certaines caractéristiques du C++, il y a les tests de traits de langage (Feature-Test Macro).

Discussions similaires

  1. Liste déroulante pour liste sans les cellules masquées
    Par AMY974 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/10/2018, 16h01
  2. Afficher la ligne entière dans une listView Sans les headers
    Par Msysteme dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/02/2009, 12h56
  3. Utiliser une DLL sans les headers
    Par Ange_blond dans le forum C++
    Réponses: 16
    Dernier message: 23/02/2009, 09h02
  4. Réponses: 4
    Dernier message: 02/05/2006, 12h08
  5. problème de configuration pour les sessions
    Par spilliaert dans le forum Langage
    Réponses: 13
    Dernier message: 27/12/2005, 20h44

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