Domanda

Sto cercando di impostare un valore non valido su -1 .. Ma non mi piacciono i numeri magici .. Qualcuno sa dove trovare un insieme di costanti comuni. Sto lavorando in VS6 (ish).

Sto cercando di leggere un file da una rete e ho bisogno di un valore negativo per la dimensione totale del file, quindi so se ho informazioni valide su di esso .. 0 è una dimensione valida, quindi non posso usalo.

Harper Shelby COLPISCI IL CHIODO SULLA TESTA .. Solo un piccolo pollice. Ha menzionato le costanti win32 .. che è esattamente quello a cui stavo pensando .. Ora per trovare un link :)

È stato utile?

Soluzione

#define BAD_VALUE -1

EDIT: la domanda originale non aveva contesto. La domanda rivista indica che si desidera una dimensione del file non valida e quindi si cercano le costanti win32. Guarda windows.h penso che la costante che cerchi possa essere in windows.h o una delle sue sotto-inclusioni. grep le tue finestre includono la directory ;-)

Altri suggerimenti

Se -1 è un valore non valido per un valore restituito nel sistema, è necessario definirlo internamente:

const int INVALID_FOO = -1

a meno che non sia necessaria la compatibilità C, nel qual caso

#define INVALID_FOO -1

sarebbe preferito. Se si tratta di una risorsa MFC o Windows standard, utilizzare INVALID_HANDLE o una delle altre costanti definite da Win32.

Vuoi usare il tuo numero magico -1 travestito da costante di Windows. Questo è molto fuorviante.

Supponiamo che io sappia che INVALID_HANDLE è 0. È corretto inizializzare i miei puntatori con INVALID_HANDLE?

char *myMessage = INVALID_HANDLE;

Come ti colpisce?

In VS, creare un nuovo progetto dell'applicazione console Windows. Vai nelle impostazioni del progetto e attiva il supporto per la ricerca. Creare un file C ++ e aggiungerlo al progetto. Tipo:

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

nel file. Compilalo. Ora digita INVALID_FILE_SIZE nel file. Fai clic destro su di esso e vai alla definizione di INVALID_FILE_SIZE. VS aprirà uno dei tanti file di intestazione di Windows pieni di valori definiti. Godetevi.

La prima cosa è che dovresti usare un int senza segno per la dimensione del file poiché una dimensione del file non è mai negativa. Ora una dimensione di file non valida è normalmente il massimo int, quindi nel caso di utilizzo di un int senza segno a 32 bit sarebbe 0xFFFFFFFF

cioè.

const unsigned int INVALID_FILESIZE = 0xFFFFFFFF;

Anche se questo è su Windows, windows.h definisce le dimensioni del file non valide tutte pronte (INVALID_FILE_SIZE)

Se si desidera utilizzare le costanti utilizzate da WinApi, consultare i file WinError.h, WinUser.h e WinNT.h.

È generalmente accettato che 0 e 1 (positivo & amp; negativo) siano OK da usare direttamente.

In effetti, probabilmente ti renderà il codice ancora più confuso nell'usare una variabile.

Aggiorna: OK, hai aggiornato la tua domanda dopo aver scritto la mia risposta. Se si utilizza & Quot; -1 & Quot; in modo aritmetico, quindi solo " -1 " è ok. Se stai restituendo un codice di errore (e il codice sembra essere solo -1) allora dovresti usare una const.

 const int INVALID_VALUE = -1;
If bytes_read < 0
    // error
EndIf
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top