任何人都知道一个好的 Windows 常量列表在哪里

Posted

技术标签:

【中文标题】任何人都知道一个好的 Windows 常量列表在哪里【英文标题】:Anyone know where a good windows constant list lives 【发布时间】:2008-12-09 21:41:17 【问题描述】:

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

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

哈珀谢尔比一针见血.. 只是一个小拇指。 他提到了win32常量..这正是我在想的..现在找到一个链接:)

【问题讨论】:

我不确定您要什么?例如,为什么不定义自己的常量? 每个人都这样做.. 我可以做到.. 但我宁愿使用一些标准的东西.. 就像你 SetLastError 一样......恕我直言,使用 WINERROR.H 中的值总是更好跨度> 具有讽刺意味的是,这个问题目前有 INVALID_FILE_SIZE 票。让我们保持不变。 ;-) 你不能只问“嘿,我在哪里可以得到一个无效的 num 啊?”。这取决于您调用的域和特定函数。 我得到了答案!我不明白对问题的否定投票。它是明确的、具体的和可回答的。我想要一个 VS 中可用的一些常量的一般列表。我使用 -1 作为示例,一个用例。也许我的下一个问题应该是最好学什么语言,或者你最喜欢的彩色咖啡杯。 【参考方案1】:
#define BAD_VALUE -1

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

【讨论】:

【参考方案2】:

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

const int INVALID_FOO = -1

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

#define INVALID_FOO -1

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

【讨论】:

我在寻找 win32 定义的常量列表。 我喜欢枚举 INVALID_FOO = -1 ; @litb:如果我要定义一个枚举,我喜欢给它起一个相关的名称,但如果你不小心,这可能会有点冗长。【参考方案3】:

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

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

char *myMessage = INVALID_HANDLE;

这让你印象如何?

【讨论】:

可读.. mymessage 中有什么.. 哦,句柄无效.. 我不应该使用它。地狱谁在乎它是什么.. INVALID_HANDLE 可能是 43264 .. 如果我测试。 if(myMessage == INVALID_HANDEL) printf("消息没有被初始化");为我工作...【参考方案4】:

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

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

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

【讨论】:

【参考方案5】:

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

const unsigned int INVALID_FILESIZE = 0xFFFFFFFF;

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

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

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

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

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

 const int INVALID_VALUE = -1;

【讨论】:

这真的不是使用什么的问题,但是谢谢。我的意思是我将使用一个 const/define 变量。我只是在寻找一些 Windows 编程附带的标准变量。像 MB_OK 或 ID_YES、VK_ENTER……它们易于阅读且可用……这更像是一种好奇心。 有趣的是,每当我问一个真正的问题时,我都会投下反对票,没有人会在评论上说“你能详细说明一下吗”或任何其他内容。我不是最有经验的程序员,但是,嘿,我的问题引出了某个地方。【参考方案8】:
If bytes_read < 0
    // error
EndIf

【讨论】:

A.我在那里没有看到一个列表,B。我在那里没有看到一个常数。 C. 由于 bytes_read 是一个无符号变量,它永远不会小于 0(假设与问题有关) @baash05:“我正在尝试从网络中读取文件,我需要一个错误的文件总大小值,所以我知道我是否获得了有效信息.. 0是有效尺寸,所以我不能使用它。”看起来像一些 fread() 风格的函数,它返回读取的字节数,或者错误时返回 -1(

以上是关于任何人都知道一个好的 Windows 常量列表在哪里的主要内容,如果未能解决你的问题,请参考以下文章

Windows Message ID 常量列表

安装目录在哪里?

Elixir 列表模式匹配 ~ 在使用列表模式匹配常量后得到 x

Windows Message ID 常量列表大全

如何重置Windows 10上的密码列表

名单 删除精灵