Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2200 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Règle de codage

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Règle de codage

n°1775289
Ahulane
Posté le 21-08-2008 à 08:59:31  profilanswer
 

Il s'agit d'une règle de codage de MISRA, et l'exemple associé provient d'un outil QAC.
 
MISRA-C++ Rule 7-1-1: A variable which is not modified shall be const qualified.  
 
If a variable does not need to be modified, then it should be declared with const qualification so that it cannot be modified. A non-parametric variable will then require its initialisation at the point of declaration. Also, future maintenance cannot accidentally modify the value.  
 
Example
 

Code :
  1. void b ( int32_t * );
  2. int32_t f (  int32_t * p1,         // Non Compliant
  3.              int32_t * const p2,   // Compliant
  4.              int32_t * const p3 )  // Compliant
  5. {
  6.    *p1 = 10;
  7.    *p2 = 10;
  8.    b( p3 );
  9.    int32_t i = 0;                  // Non Compliant
  10.    return i;
  11. }


 
 
La règle écrite je la comprends, enfin je pense, mais c’est leur exemple qui me met le doute. Je trouve leur exemple pas du tout clair.
 
Pour ma part, voilà ce que j’ai compris :
 
(prenons un exemple basique)  
 

Code :
  1. Int f ( int i, int j)
  2. {
  3.    int y = i ;
  4.    j++ ;
  5.    int z = 10 ;
  6.    int y = y + j + z;
  7.    return ( y ) ;
  8. }


 
Dans cet exemple pour moi, selon la règle i doit etre marqué const car il n’est pas modifié, à la place on déclare une variable locale y pour effectuer les calculs. Du coup si plus loin dans la fonction, on a besoin de rappeler i, sa valeur n’aura pas bouger et sera bien protéger via le const.
De meme que z mérite const car elle est initialisée mais pas modifiée.
 
Vous me confirmez ?
 
Merci d'avance.
 

mood
Publicité
Posté le 21-08-2008 à 08:59:31  profilanswer
 

n°1775291
Joel F
Real men use unique_ptr
Posté le 21-08-2008 à 09:03:48  profilanswer
 

bah c'est le principe du mot clé const, y a rien de sorcier.

 


Message édité par Joel F le 21-08-2008 à 09:04:09
n°1777000
Malkav
Posté le 25-08-2008 à 11:13:00  profilanswer
 

par contre ton exemple est foireux :

Code :
  1. int f ( int i, int j)
  2. {
  3.   int y = i ;
  4.   j++ ;
  5.   int z = 10 ;
  6.   int y = y + j + z;
  7.   return ( y ) ;
  8. }


tu déclare deux fois la variable y... sinon ben oui c'est la bête règle du const, si c'est constant tu met const c'est assez simple ;)


Message édité par Malkav le 25-08-2008 à 11:13:15

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Règle de codage

 

Sujets relatifs
[Réglé] Boucle d'Update et Zones de texte...[Réglé] regex qui va pas
[Réglé] lire fichier log pendant qu'une application l'écrit[URL REWRITING] Règle qui pose problème
[Réglé][JavaScript] Erreur 'Object expected'erreur de codage
[Réglé] ip:port en char traduire en decimal. master query[Réglé] [VB.net] Diff entre Dim variable et Dim variable() ?
[Réglé] description et select attaché[Réglé] caractères possible sans risque
Plus de sujets relatifs à : Règle de codage


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR