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 :

Les 'built-in functions'


Sujet :

C

  1. #1
    Membre éclairé Avatar de dafpp
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 345
    Par défaut Les 'built-in functions'
    Bonjour,
    les 'built-in functions' - je ne sais pas comment on dit en français, sont des fonctions propres au compilo, et non au langage, c'est à dire que des fonctions ne pourront marcher que pour certains compilo ?
    -- je préfère dire ce que tout le monde sait, pour être sûr de n'avoir pas compris de travers.

    Donc, quels sont-elles ? J'aimerai l'éviter quand je la rencontre, donc où peut-on retrouver une liste des fonctions 'built-in', ou au moins, dans mon cas, je serai interessé par gcc.

    (il est bon de préciser avec gcc l'option std, pour préciser la norme utilisé ? - cette option desactive ces fonctions built-in)

    j'en profite pour demander quelque chose de nouveau:
    Est-il conseillé (comme pour les built-in) d'utilisé les extensions des compilos ? pour gcc: comme typeof, les "nested functions", labels, ... y a t-il un intérêt de les utiliser ? Il y a encore un soucis de compatibilité par la suite, mais y a t-il des choses semblables chez les autres compilos ? Est ce que certains éléments rentrent tout de même dans les normes ?

    merci d'avance.

  2. #2
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Salut,

    Les extensions (donc entre autre les builtins mais aussi les __attribute__ par exemple) sont typique à un compilateur. Si tu les utilises tu seras captif à un compilateur, mais quand tu les utilises tu le sais tout de suite (elles sont repérées et tu ne peux les utiliser par hasard).
    Pour GCC, la doc est très fournie et bien faite. L'option std permet de sélectionner le standard c que tu utilises (C89/C99/C11/...). Les builtins sont toujours dispo. Il y a une option -fno-builtin.
    Il y a bien sûr un intérêt à les utiliser, par exemple si tu veux tirer avantages des extensions SIMD de ton ia32, des extensions similaires sont dispo sur les autres compilo mais elles ne sont ni stadardisées ni obligatoires.

  3. #3
    Membre éclairé Avatar de dafpp
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 345
    Par défaut
    ok je vois.
    je suis d'accord, mais le mieux, si on a vraiment pas de bonnes excuses, on utilise pas ?

    et si on ajoute l'option std, les built-ins sont desactivés, sauf si la valeur et du genre gcc89/99 - si je ne me trompe pas.

  4. #4
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Citation Envoyé par dafpp Voir le message
    ok je vois.
    je suis d'accord, mais le mieux, si on a vraiment pas de bonnes excuses, on utilise pas ?

    et si on ajoute l'option std, les built-ins sont desactivés, sauf si la valeur et du genre gcc89/99 - si je ne me trompe pas.
    En fait il ne faut pas avoir des excuses mais des raisons. Si tu désires un maximum de portabilité avec un minimum de boulot : ne les utilise pas ; si tu désires un maximum de performance (en général) et que la portabilité est secondaire : utilise les. Les extensions du type sucre syntaxique sont sympa (parfois) mais n'apportent rien en terme de perf et rendent ton code moins portable, je dirais donc : à proscrire.
    Certaines extensions sont très utiles (même dans le domaine pro j'autorise par exemple certains __attribute__).

    Quant à l'utilisation de std, je laisse la parole à la doc :
    By default, GCC provides some extensions to the C language that on rare occasions conflict with the C standard. See Chapter 6 [Extensions to the C Language Family], page 291. Use of the ‘-std’ options listed above will disable these extensions where they conflict with the C standard version selected.
    6 Extensions to the C Language Family

    GNU C provides several language features not found in ISO standard C. (The ‘-pedantic’ option directs GCC to print a warning message if any of these features is used.) To test for the availability of these features in conditional compilation, check for a predefined macro __GNUC__, which is always defined under GCC.
    builtin et extensions sont deux choses différentes.

  5. #5
    Membre éclairé Avatar de dafpp
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 345
    Par défaut
    Oui d'accord, ça j'avais bien compris que ce n'était pas la même chose.
    Les built-ins sont des fonctions apporté par le compilo, qui permettent des fois des nouvelles solutions, des nouvelles manière de faire, ou une amelioration (entre guillemet), comme pour "alloca" - sauf que c'est différent de malloc, étant donné que la mémoire n'est pas alloué dans le tas, mais dans la pile.
    -- corrigez moi si je me trompe - vous saurez le faire

    Et les extensions, ce sont des nouvelles manières, format, d'écrire du code C. Donc je pense là aux fonctions dans des fonctions, aux labels, ...

    Donc j'avais mal lu, simplement, mais je n'ai pas confondu entre les deux, c'est moi qui ai confondu ma phrase

    merci pour ces éclaircis.

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

Discussions similaires

  1. warning: built-in function 'log' declared as non-function
    Par darkwall_37 dans le forum Débuter
    Réponses: 4
    Dernier message: 02/02/2013, 13h06
  2. les functors ou function objet en c++
    Par annesophiedecar dans le forum Langage
    Réponses: 8
    Dernier message: 15/10/2009, 21h14
  3. Réponses: 6
    Dernier message: 10/08/2009, 15h00
  4. Réponses: 1
    Dernier message: 16/07/2008, 02h34
  5. Réponses: 3
    Dernier message: 28/09/2007, 11h44

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