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 :

Optimisation et/ou élégance


Sujet :

C

  1. #21
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par alveric
    Horrible, le style K&R ? Bof, ameliorable, je dirais.
    C'est l'engin avec les accolades non alignées ? Pouah ! Illisible...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void affiche(int t[])
    {
       int i = 0;
       for (; i < SIZEMAXTAB; i++) {
          printf("%d\t", t[i]);
       }
       printf("\n");
    }
    de plus, il manque un espace entre le nom de la fonction et sa parenthèse ouvrante.
    (cette contrainte n'existe que pour la définition des macros, qui de toutes façons, ne sont pas affectées par GNU-indent)

  2. #22
    Membre éclairé Avatar de jacquesh
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Par défaut
    Citation Envoyé par Zoso_
    Citation Envoyé par Emmanuel Delahaye
    Citation Envoyé par jacquesh
    #define NELEM(a) (sizeof(a)/sizeof *(a))
    très pratique je ne savais pas que l'on pouvait rendre un define dynamique
    Gni ? Comment ça dynamique ? Une macro opère une sustitution de texte avant la compilation, c'est tout.
    je pense qu'il veut dire qu'on peut "passer une variable" à la macro en quelque sorte, je sais que c'est pas du tout le bon therme, mais à mon avis c est un peu ça dans son esprit, qu'il me corrige si je me trompe
    oui c tout à fait ca ;; c vrai le terme est surement mal choisi... dsl..

  3. #23
    Membre éclairé Avatar de jacquesh
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Par défaut
    c quoi d'après vous les meilleurs options pour indent afin de rendre le code le plus lisible possible... moi je le trouve déjà clair le mode kr ???

    serais-je le seul ??

  4. #24
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par jacquesh
    c quoi d'après vous les meilleurs options pour indent afin de rendre le code le plus lisible possible... moi je le trouve déjà clair le mode kr ???

    serais-je le seul ??
    J'ai donné un lien...

  5. #25
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par gege2061
    Attention il y a une différence entre initialisation et déclaration. Ceci n'est pas permi :
    ... en C90. C'est permi en C99, et c'est ce que j'appelle 'élégant'.

  6. #26
    Membre chevronné
    Avatar de Edouard Kaiser
    Profil pro
    Inscrit en
    Février 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2004
    Messages : 521
    Par défaut
    Question de gout finalement tout ça, personnellement K&R je trouve ça affreux.

  7. #27
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Zoso_
    Question de gout finalement tout ça, personnellement K&R je trouve ça affreux.
    Non, horrible ;-)

  8. #28
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut
    Les éditeurs de texte récents permettent de s'y retrouver tout de même au niveau des accolades non alignées. Quand on place le curseur à côté d'une accolade, ça surligne en rouge l'autre accolade liée.
    Depuis que j'ai commencé le Java, j'utilise le style K&R.
    Mais c'est vrai qu'avant, quand je ne faisais que du C, j'alignais aussi les accolades...
    Pour l'indentation du code C, j'utilise comme Emmanuel l'outil 'indent' qui est en plus dispo sous Linux.

    Nas'

  9. #29
    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 : 48
    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
    Depuis que j'ai découvert indent (merci Emmanuel ) bah voici mes réglages :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    indent -bli0 -npsl -saf -sai -saw -i3 -ts0 -sob -bad -bap
    Si ca peut etre utile a jacquesh
    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 !

  10. #30
    Membre éclairé Avatar de jacquesh
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Par défaut
    Citation Envoyé par CSoldier
    Depuis que j'ai découvert indent (merci Emmanuel ) bah voici mes réglages :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    indent -bli0 -npsl -saf -sai -saw -i3 -ts0 -sob -bad -bap
    Si ca peut etre utile a jacquesh
    globalement c pas pas mal.. mais les { } alignées... je m'y ferai jamais... sinon j'aime bien ..thx

    avec python au moins ya pas de problème de style... lol

  11. #31
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Citation Envoyé par gege2061
    Attention il y a une différence entre initialisation et déclaration. Ceci n'est pas permi :
    ... en C90. C'est permi en C99, et c'est ce que j'appelle 'élégant'.
    Merci je n'était pas au courant! 'élégant' En C++ il est déconseillé de faire ainsi car la durée de vie de la variable n'est pas fixée par la norme (une fois sortie de la boucle for, la variable peu ou non être détruite), par contre en C99 je ne sais pas si le problème existe

  12. #32
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par jacquesh
    mais les { } alignées... je m'y ferai jamais...
    C'est pourtant d'une logique implacable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    expression
    debut
       ...
    fin
    C'est de l'algorithmique de base...

  13. #33
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut
    C'est vrai que si on se base sur les langages tels que le Pascal, on voit mal le "begin" après l'expression.

    Nas'

  14. #34
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par gege2061
    En C++ il est déconseillé de faire ainsi car la durée de vie de la variable n'est pas fixée par la norme (une fois sortie de la boucle for, la variable peu ou non être détruite), par contre en C99 je ne sais pas si le problème existe
    Argh, c'est terrible, ça. J'espère qu'en C99, c'est résolu...

    Il faut voir aussi de quel C++ tu parles. J'espère que C++98 résout ce problème...

  15. #35
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 289
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Citation Envoyé par gege2061
    En C++ il est déconseillé de faire ainsi car la durée de vie de la variable n'est pas fixée par la norme (une fois sortie de la boucle for, la variable peu ou non être détruite), par contre en C99 je ne sais pas si le problème existe
    Argh, c'est terrible, ça. J'espère qu'en C99, c'est résolu...
    J'ai pas la norme sous la main, mais le Rationale parle d'une telle variable en disant:
    Citation Envoyé par Rationale, 6.8.5.3
    Such a loop variable is in a new scope, so it does not affect any other variable with the same name and is destroyed at the end of the loop, which can lead to possible optimization.
    Et une telle declaration doit etre auto ou register.

  16. #36
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par alveric
    <...>le Rationale parle d'une telle variable en disant:
    Citation Envoyé par Rationale, 6.8.5.3
    Such a loop variable is in a new scope, so it does not affect any other variable with the same name and is destroyed at the end of the loop, which can lead to possible optimization.
    Et une telle declaration doit etre auto ou register.
    C'est le comportement que j'attend. C'est une legère exception par rapport à une variable normale définie dans un bloc. (la portée est légèrement plus grande que le bloc).

  17. #37
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Citation Envoyé par gege2061
    En C++ il est déconseillé de faire ainsi car la durée de vie de la variable n'est pas fixée par la norme (une fois sortie de la boucle for, la variable peu ou non être détruite), par contre en C99 je ne sais pas si le problème existe
    Argh, c'est terrible, ça. J'espère qu'en C99, c'est résolu...

    Il faut voir aussi de quel C++ tu parles. J'espère que C++98 résout ce problème...
    Oui bien sur, et je serais surpris si ce probleme n'a pas ete resolu avant cela. En C++, le i de for(int i = 0; ...) a la portee du bloc concerne par la boucle for. (la destruction de la variable a la fin de la boucle de for est un probleme gere par le compilateur, pas le programmeur. Le code:
    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
     
    #include <iostream>
    using namespace std;
     
    int main()
    {
       int i = 7;
       cout << i << endl;
     
       for(int i = 0; i<3; i++)
       {
           cout << i << endl;
       }
     
       cout << i << endl;
     
      for(int i = 0; i<2; i++)
      {
         cout << i << endl;
      }
    }
    produit bien la sortie attendue:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    7
    0
    1
    2
    7
    0
    1
    Que le compilateur ait choisi de detruire le i de la premiere boucle for, ou de le garder pour la deuxieme boucle, ce n'est pas le probleme du codeur.)

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Optimisation de votre SGBDR et de vos requêtes...
    Par SQLpro dans le forum Langage SQL
    Réponses: 35
    Dernier message: 11/01/2013, 11h49
  2. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 4
    Dernier message: 05/02/2003, 08h54
  3. [VB6] [BDD] Optimisation de l'accès aux données
    Par LadyArwen dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 30/01/2003, 13h27
  4. [langage]Problème de temps de lecture, optimisation
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 08/01/2003, 08h47
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24

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