Pergunta

Estou tentando definir um valor inválido para -1 .. Mas eu não gosto de números mágicos .. Alguém sabe onde encontrar um conjunto de constantes comuns. Eu estou trabalhando em VS6 (ish).

Eu estou tentando ler um arquivo de toda a rede, e eu preciso de uma má valor para o tamanho total do arquivo, então eu sei se eu tenho informações válidas sobre ele .. 0 é um tamanho válido para que eu não posso Use isso.

Harper Shelby bateu o prego NA CABEÇA .. Apenas um pouco polegar. Ele mencionou as constantes win32 .. que é exatamente o que eu estava pensando .. Agora para encontrar um link:)

Foi útil?

Solução

#define BAD_VALUE -1

EDIT: a pergunta original não tinha contexto. A questão revista indica que você quer um tamanho de arquivo inválido e são, portanto, olhando para as constantes win32. Olhada windows.h eu acho que a constante que você procura pode estar em windows.h ou um dos seus sub-inclui. grep suas janelas incluem diretório; -)

Outras dicas

Se -1 é um valor inválido para um valor de retorno em seu sistema, você deve defini-lo internamente:

const int INVALID_FOO = -1

a menos que a compatibilidade C é necessária, caso em que

#define INVALID_FOO -1

seria preferível. Se é uma MFC ou Windows recurso, INVALID_HANDLE uso padrão ou uma das outras constantes Win32-definidos.

Você quer usar seu próprio número mágico -1 disfarçado como uma constante do Windows. Isso é muito enganador.

Suponha que eu descobri que INVALID_HANDLE é 0. É OK para inicializar meus ponteiros com INVALID_HANDLE?

char *myMessage = INVALID_HANDLE;

Como é que esta greve é?

Na VS, Criar um novo projeto janelas aplicativo console. Vá para as configurações do projeto e ativar o suporte de navegação. Crie um arquivo C ++ e adicioná-lo ao projeto. Tipo:

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

para o arquivo. Compilá-lo. Agora digite invalid_file_size para o arquivo. Botão direito do mouse sobre ela e Ir à definição de invalid_file_size. VS irá abrir uma das muitas janelas arquivos de cabeçalho cheio de valores definidos. Desfrute.

A primeira coisa é que você deve estar usando um int não assinado para o tamanho do arquivo como um tamanho de arquivo nunca é negativo. Agora um tamanho de arquivo inválido é normalmente o int max assim, no caso de usar um int não assinado de 32 bit seria 0xFFFFFFFF

i.

const unsigned int INVALID_FILESIZE = 0xFFFFFFFF;

Além disso, se esta é em janelas, windows.h define o tamanho do arquivo inválido tudo pronto (invalid_file_size)

Se você quiser usar as constantes usadas pelo Winapi, confira os arquivos WinError.h, WINUSER.H e WINNT.H.

É geralmente aceite a 0 e 1 (negativo positivo &) são OK para usar diretamente.

Na verdade, ele provavelmente vai fazer você código ainda mais confuso para usar uma variável em vez.

Update: OK, você atualizou sua pergunta depois que eu escrevi a minha resposta. Se você estiver usando "-1" de forma aritmética, então é só "-1" está bem. Se você estiver retornando um código de erro (e o código só acontece de ser -1), então você deve usar um const.

 const int INVALID_VALUE = -1;
If bytes_read < 0
    // error
EndIf
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top