Кто-нибудь знает, где находится хороший постоянный список Windows
Вопрос
Я пытаюсь установить недопустимое значение равным -1..Но мне не нравятся магические числа..Кто-нибудь знает, где найти набор общих констант.Я работаю в VS6 (ish).
Я пытаюсь прочитать файл по сети, и мне нужно неверное значение для общего размера файла, чтобы я знал, есть ли у меня достоверная информация о нем..0 - это допустимый размер, поэтому я не могу его использовать.
Харпер Шелби ПОПАЛА В САМУЮ ТОЧКУ..Просто маленький большой палец.Он упомянул константы win32..это именно то, о чем я думал..Теперь, чтобы найти ссылку :)
Решение
#define BAD_VALUE -1
Редактировать:первоначальный вопрос не имел контекста.Пересмотренный вопрос указывает, что вам нужен недопустимый размер файла и, таким образом, вы ищете константы win32.Посмотрите на windows.h я думаю, что константа, которую вы ищете, может быть в windows.h или одно из его под-включений.grep ваш каталог Windows include ;-)
Другие советы
Если -1 является недопустимым значением для возвращаемого значения в вашей системе, вы должны определить его внутренне:
const int INVALID_FOO = -1
если только не требуется совместимость с C, и в этом случае
#define INVALID_FOO -1
было бы предпочтительнее.Если это стандартный ресурс MFC или Windows, используйте INVALID_HANDLE или одну из других констант, определенных в Win32.
Вы хотите использовать свое собственное магическое число -1, замаскированное под константу Windows.Это очень вводит в заблуждение.
Предположим, я случайно знаю, что INVALID_HANDLE равен 0.Можно ли инициализировать мои указатели с помощью INVALID_HANDLE?
char *myMessage = INVALID_HANDLE;
Как вам это кажется?
В VS создайте новый проект консольного приложения Windows.Зайдите в настройки проекта и включите поддержку просмотра.Создайте файл C ++ и добавьте его в проект.Тип:
#include <windows.h>
void main(void) {}
в файл.Скомпилируйте его.Теперь введите INVALID_FILE_SIZE в файл.Щелкните по нему правой кнопкой мыши и получите определение INVALID_FILE_SIZE.VS откроет один из многих заголовочных файлов Windows, полных определенных значений.Наслаждайся.
Во-первых, вы должны использовать unsigned int для определения размера файла, поскольку размер файла никогда не бывает отрицательным.Теперь недопустимый размер файла обычно равен max int поэтому в случае использования 32 разрядного unsigned int это будет 0xFFFFFFFF
т. е.
const unsigned int INVALID_FILESIZE = 0xFFFFFFFF;
Также, если это в Windows, windows.h определяет недопустимый размер файла, все готово (INVALID_FILE_SIZE)
Если вы хотите использовать константы, используемые WinAPI, ознакомьтесь с файлами WinError.h, WinUser.h и WinNT.h.
Общепринято, что 0 и 1 (положительные и отрицательные) можно использовать напрямую.
На самом деле, использование переменной вместо этого, вероятно, сделает ваш код еще более запутанным.
Обновить:Хорошо, вы обновили свой вопрос после того, как я написал свой ответ.Если вы используете "-1" в арифметическом смысле, то просто "-1" подойдет.Если вы возвращаете код ошибки (и код просто оказывается равным -1), то вам следует использовать const .
const int INVALID_VALUE = -1;
If bytes_read < 0
// error
EndIf