Multi-caractère des avertissements constants

Pourquoi est-ce un avertissement? Je pense qu'il y a de nombreux cas où les est plus facile à utiliser multi-char int constantes au lieu de "pas de sens" numéros ou au lieu de définir const variables avec la même valeur. Lors de l'analyse de l'onde/tiff/autres types de fichiers est plus clair pour comparer les valeurs lues avec quelques "EVAW', 'données', etc au lieu de leurs valeurs correspondantes.

Exemple de code:

int waveHeader = 'EVAW';

Pourquoi est-ce que donner un avertissement?

  • Je vais avoir du mal à essayer de comprendre votre question. Pouvez-vous faire plus clair?
  • Je vais essayer:) Désolé
  • Connexes: stackoverflow.com/questions/7497192/enum-constants-questions
  • Ce qui semble fonctionner et est bien lisible, mais peut-être pas exactement sûr est de style c-cast littéraux de chaîne à int*: int waveHeader = *((int*)"wave");. — J'ai une plus grande confiance, sentiment à propos de la solution, j'ai tellement loin avec: pour memcpy le littéral de chaîne dans une union de type int(s) et l'omble chevalier. Cela introduit une surcharge, mais ce n'est généralement leglectable – au moins si elle ne se produit que dans le fichier d'en-tête.
  • Sur Visual Studio 2008, il ne semble pas donner un avertissement, et donne les mêmes résultats que "int v = 'w' | 'a' << 8 | 'v' << 16 | 'e" << 24;"
  • Ré-ouvert et converti à cette question à l'adresse C seulement, puisque c'est ce que les réponses sont sur le.
  • la réponse par "o11c" est sur le C++
  • Les dangers de l'utilisation de caractères multi-constantes: habr.com/en/company/pvs-studio/blog/457694

InformationsquelleAutor Mircea Ispas | 2011-10-13