我在Win32api中遇到过这种ATOM
类型,在 Acrobat API 中也有ASAtom。
据我所知,原子是通常由字符串组成的哈希表的键,可以在应用程序之间快速查找和共享数据。这是正确的吗?原子类型的词源是什么?
编辑
经过一番广泛的搜索后,我注意到Prolog使用了原子,所以这个词一定有一些来源。它似乎曾经指代任何单个数据。
ATOM 是一个 16 位 Windows 类句柄原语。它的值对用户模式完全不透明。它不是指针或索引。
typedef 无符号短 ATOM;
至于名称的词源ATOM
,我知道我曾经在一些旧的 Microsoft Win32 API 文档中看到它是“ A ccess to Memory ”或类似名称的首字母缩写词。它是用于表示系统中一些内部数据结构的简单数字标识符(其他名称是“句柄”)的术语。
出于显而易见的原因,给用户直接指向这些结构的指针是不明智的。首先,因为它们驻留在内核空间中,其次,因为它违反了封装。然后用户可以释放不属于它的内存,或者覆盖它,或者其他一些愚蠢的想法。所以操作系统只是给它一些替换数字标签(即ATOM),然后可以用来从系统请求数据。用户传递小数字而不是整个巨大的数据结构也更快。用户不需要关心内存分配和东西,或者通过不再有效的指针访问一些数据,这可能会使他们的程序崩溃。
RegisterClass / RegistrClassEx函数(以及其他一些函数)返回一个ATOM数据类型。
ATOM 唯一标识正在注册的类,但如果函数失败则返回零,因此您可以像这样测试函数是否失败
ATOM a=0;
.
.
a = RegisterClassEx(your_window);
if (0==a)
{
//code for function failed
}