Pregunta

Estoy tratando de establecer un valor no válido en -1. Pero no me gustan los números mágicos. Alguien sabe dónde encontrar un conjunto de constantes comunes. Estoy trabajando en VS6 (ish).

Estoy tratando de leer un archivo desde una red y necesito un valor incorrecto para el tamaño total del archivo, así que sé si tengo información válida sobre él. 0 es un tamaño válido, así que no puedo usa eso.

Harper Shelby golpeó el clavo en la cabeza. Solo un pequeño pulgar. Mencionó las constantes win32 ... que es exactamente lo que estaba pensando ... Ahora para encontrar un enlace :)

¿Fue útil?

Solución

#define BAD_VALUE -1

EDITAR: la pregunta original no tenía contexto. La pregunta revisada indica que desea un tamaño de archivo no válido y, por lo tanto, está buscando las constantes win32. Mire windows.h creo que la constante que busca puede estar en windows.h o uno de sus subincluidos. grep sus ventanas incluyen directorio ;-)

Otros consejos

Si -1 es un valor no válido para un valor de retorno en su sistema, debe definirlo internamente:

const int INVALID_FOO = -1

a menos que se necesite compatibilidad con C, en cuyo caso

#define INVALID_FOO -1

sería preferible. Si se trata de un recurso estándar de MFC o Windows, use INVALID_HANDLE o una de las otras constantes definidas por Win32.

Desea usar su propio número mágico -1 disfrazado como una constante de Windows. Esto es muy engañoso.

Supongamos que sé que INVALID_HANDLE es 0. ¿Está bien inicializar mis punteros con INVALID_HANDLE?

char *myMessage = INVALID_HANDLE;

¿Cómo te parece esto?

En VS, cree un nuevo proyecto de aplicación de consola de Windows. Vaya a la configuración del proyecto y active el soporte de navegación Cree un archivo C ++ y agréguelo al proyecto. Tipo:

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

en el archivo. Compilarlo Ahora escriba INVALID_FILE_SIZE en el archivo. Haga clic derecho sobre él y vaya a la definición de INVALID_FILE_SIZE. VS abrirá uno de los muchos archivos de encabezado de Windows lleno de valores definidos. Disfruta.

Lo primero es que debe usar un int sin firmar para el tamaño del archivo ya que el tamaño del archivo nunca es negativo. Ahora, un tamaño de archivo no válido es normalmente el int máximo, por lo que en el caso de usar un int sin signo de 32 bits sería 0xFFFFFFFF

es decir

const unsigned int INVALID_FILESIZE = 0xFFFFFFFF;

Además, si está en Windows, windows.h define un tamaño de archivo no válido listo (INVALID_FILE_SIZE)

Si desea utilizar constantes utilizadas por WinApi, consulte los archivos WinError.h, WinUser.h y WinNT.h.

Se acepta generalmente que 0 y 1 (positivo & amp; negativo) se pueden usar directamente.

De hecho, probablemente hará que el código sea aún más confuso usar una variable en su lugar.

Actualización: OK, actualizaste tu pregunta después de que escribí mi respuesta. Si está utilizando & Quot; -1 & Quot; de manera aritmética, entonces solo " -1 " está bien. Si está devolviendo un código de error (y el código resulta ser -1), entonces debe usar un const.

 const int INVALID_VALUE = -1;
If bytes_read < 0
    // error
EndIf
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top