我正在尝试将无效值设置为 -1.. 但我不喜欢幻数.. 任何人都知道在哪里可以找到一组公共常量。我在 VS6 (ish) 中工作。
我正在尝试从网络中读取文件,我需要一个错误的文件总大小值,所以我知道我是否得到了有效的信息。0 是有效的大小,所以我不能使用它。
哈珀谢尔比击中了头上的钉子……只是一个小拇指。他提到了win32常量..这正是我在想的..现在找到一个链接:)
我正在尝试将无效值设置为 -1.. 但我不喜欢幻数.. 任何人都知道在哪里可以找到一组公共常量。我在 VS6 (ish) 中工作。
我正在尝试从网络中读取文件,我需要一个错误的文件总大小值,所以我知道我是否得到了有效的信息。0 是有效的大小,所以我不能使用它。
哈珀谢尔比击中了头上的钉子……只是一个小拇指。他提到了win32常量..这正是我在想的..现在找到一个链接:)
如果 -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 作为文件大小,因为文件大小永远不会是负数。现在无效的文件大小通常是最大 int,因此在使用 32 位无符号整数的情况下,它将是 0xFFFFFFFF
IE
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