Question

J'essaie de définir une valeur non valide sur -1.Mais je n'aime pas les nombres magiques.Quelqu'un sait où trouver un ensemble de constantes communes.Je travaille dans VS6 (ish).

J'essaie de lire un fichier sur un réseau et j'ai besoin d'une mauvaise valeur pour la taille totale du fichier. Je sais donc si j'ai obtenu des informations valides à ce sujet.0 est une taille valide, je ne peux donc pas l'utiliser.

Harper Shelby a frappé le clou sur la tête.Juste un petit pouce.Il a mentionné les constantes win32.c'est exactement ce à quoi je pensais..Maintenant, je dois trouver un lien :)

Était-ce utile?

La solution

#define BAD_VALUE -1

EDIT: la question initiale n'avait pas de contexte. La question révisée indique que vous souhaitez une taille de fichier non valide et recherchez donc les constantes win32. Regardez windows.h . Je pense que la constante que vous recherchez peut figurer windows.h ou l'un de ses sous-inclus. grep votre répertoire d’inclusion de fenêtres; -)

Autres conseils

Si -1 est une valeur non valide pour une valeur de retour dans votre système, vous devez la définir en interne:

const int INVALID_FOO = -1

sauf si la compatibilité C est nécessaire, auquel cas

#define INVALID_FOO -1

serait préféré. S'il s'agit d'une ressource MFC ou Windows standard, utilisez INVALID_HANDLE ou l'une des autres constantes définies par Win32.

Vous voulez utiliser votre propre nombre magique -1 déguisé en constante Windows. C'est très trompeur.

Supposons que je sache que INVALID_HANDLE a la valeur 0. Puis-je initialiser mes pointeurs avec INVALID_HANDLE?

char *myMessage = INVALID_HANDLE;

Comment cela vous frappe-t-il?

Dans VS, créez un nouveau projet d’application de console Windows. Allez dans les paramètres du projet et activez le support de navigation. Créez un fichier C ++ et ajoutez-le au projet. Type:

#include <windows.h>
void main(void) {}

dans le fichier. Compilez-le. Maintenant, tapez INVALID_FILE_SIZE dans le fichier. Faites un clic droit dessus et allez à la définition de INVALID_FILE_SIZE. VS ouvrira l’un des nombreux fichiers d’en-tête de Windows remplis de valeurs définies. Profitez.

La première chose à faire est d’utiliser un entier non signé pour la taille du fichier, car sa taille n’est jamais négative. Maintenant, une taille de fichier invalide est normalement le max int. Ainsi, si vous utilisez un entier 32 bits non signé, ce serait 0xFFFFFFFF

c'est-à-dire

const unsigned int INVALID_FILESIZE = 0xFFFFFFFF;

Également si cela est sous Windows, windows.h définit une taille de fichier non valide tout prêt (INVALID_FILE_SIZE)

Si vous souhaitez utiliser les constantes utilisées par WinApi, consultez les fichiers WinError.h, WinUser.h et WinNT.h.

Il est généralement admis que les 0 et 1 (positif et négatif) peuvent être utilisés directement.

En fait, cela rendra probablement votre code encore plus déroutant si vous utilisez une variable à la place.

Mise à jour:OK, vous avez mis à jour votre question après avoir écrit ma réponse.Si vous utilisez "-1" de manière arithmétique, alors seul "-1" suffit.Si vous renvoyez un code d'erreur (et que le code se trouve être -1), vous devez utiliser un const.

 const int INVALID_VALUE = -1;
If bytes_read < 0
    // error
EndIf
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top