-2

我正在尝试将无效值设置为 -1.. 但我不喜欢幻数.. 任何人都知道在哪里可以找到一组公共常量。我在 VS6 (ish) 中工作。

我正在尝试从网络中读取文件,我需要一个错误的文件总大小值,所以我知道我是否得到了有效的信息。0 是有效的大小,所以我不能使用它。

哈珀谢尔比击中了头上的钉子……只是一个小拇指。他提到了win32常量..这正是我在想的..现在找到一个链接:)

4

8 回答 8

2
#define BAD_VALUE -1

编辑:最初的问题没有上下文。修改后的问题表明您想要一个无效的文件大小,因此正在寻找 win32 常量。看看windows.h我认为你寻找的常量可能在windows.h或其子包含之一中。grep 你的 Windows 包含目录 ;-)

于 2008-12-09T21:46:13.140 回答
2

如果 -1 是系统中返回值的无效值,则应在内部定义它:

const int INVALID_FOO = -1

除非需要 C 兼容性,在这种情况下

#define INVALID_FOO -1

将是首选。如果它是标准 MFC 或 Windows 资源,请使用 INVALID_HANDLE 或其他 Win32 定义的常量之一。

于 2008-12-09T21:46:55.137 回答
1

您想使用自己的幻数 -1 伪装成 Windows 常量。这是非常具有误导性的。

假设我碰巧知道 INVALID_HANDLE 为 0。可以用 INVALID_HANDLE 初始化我的指针吗?

char *myMessage = INVALID_HANDLE;

这对你有什么影响?

于 2008-12-09T23:46:19.387 回答
1

在 VS 中,创建一个新的 windows 控制台应用程序项目。进入项目设置并打开浏览支持。创建一个 C++ 文件并将其添加到项目中。类型:

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

到文件中。编译它。现在在文件中输入 INVALID_FILE_SIZE。右键单击它并转到 INVALID_FILE_SIZE 的定义。VS 将打开许多包含已定义值的 Windows 头文件之一。享受。

于 2008-12-10T00:19:41.770 回答
1

首先,您应该使用 unsigned int 作为文件大小,因为文件大小永远不会是负数。现在无效的文件大小通常是最大 int,因此在使用 32 位无符号整数的情况下,它将是 0xFFFFFFFF

IE

const unsigned int INVALID_FILESIZE = 0xFFFFFFFF;

此外,如果这是在 Windows 上,windows.h 定义了无效的文件大小(INVALID_FILE_SIZE)

于 2008-12-10T04:27:21.600 回答
1

如果您想使用 WinApi 使用的常量,请查看 WinError.h、WinUser.h 和 WinNT.h 文件。

于 2010-08-12T12:21:54.080 回答
-1

一般认为 0 和 1(正负)可以直接使用。

事实上,使用变量可能会让你的代码更加混乱。

更新:好的,你在我写完答案后更新了你的问题。如果您以算术方式使用“-1”,则只需“-1”即可。如果您返回错误代码(并且代码恰好是 -1),那么您应该使用 const。

 const int INVALID_VALUE = -1;
于 2008-12-09T21:47:05.027 回答
-1
If bytes_read < 0
    // error
EndIf
于 2008-12-09T23:53:53.943 回答