本章介绍了最常见的 NSPR 类型。其他章节在描述使用这些类型的函数时,会介绍更专业的类型。
有关 NSPR 类型、函数和宏的命名约定的信息,请参阅 NSPR 命名约定。
调用约定类型¶
这些类型用于支持原型和实现的跨平台声明。
PR_EXTERN 用于外部函数或变量的声明。
PR_IMPLEMENT 用于外部函数或变量的定义。
PR_CALLBACK 用于通过函数指针调用的函数的定义和声明。一个典型的示例是在应用程序中实现但在共享库中调用的函数。
以下是一些使用这些类型的简单示例
在 dowhim.h 中
PR_EXTERN( void ) DoWhatIMean( void );
static void PR_CALLBACK RootFunction(void *arg);
在 dowhim.c 中
PR_IMPLEMENT( void ) DoWhatIMean( void ) { return; };
PRThread *thread = PR_CreateThread(..., RootFunction, ...);
代数类型¶
NSPR 提供以下类型定义,这些类型定义具有明确的位宽,用于代数运算。
为了方便起见,NSPR 还提供了具有平台相关位宽的类型定义。
8 位、16 位和 32 位整数类型¶
有符号整数¶
无符号整数¶
64 位整数类型¶
不同的平台以不同的方式处理 64 位数值字段。某些系统需要使用绑定在结构中的两个 32 位数值字段来模拟 64 位字段。由于类型(long long
与 struct LONGLONG
)不兼容,因此 NSPR 定义了宏来操作 64 位数值字段。这些宏在 prlong.h
中定义。谨慎使用这些宏可确保代码的可移植性,使其能够在 NSPR 支持的所有平台上运行,并在直接处理 long long 值的系统上提供最佳行为。
浮点数类型¶
NSPR 浮点数类型始终为 64 位。
原生操作系统整数类型¶
这些类型最适合自动变量。它们保证至少为 16 位,尽管各种体系结构可以将其定义为更宽(例如,32 位甚至 64 位)。这些类型永远不适用于结构的字段。
其他类型¶
大小类型¶
指针差类型¶
指针差类型。这些类型的变量适合存储指针或指针减法结果。它们与 libc
中的对应类型相同。
布尔类型¶
布尔值的类型和常量。