如何在c++编译器中正确实现"ssize_t"



我目前正在学习C++,我看到课本上写着一行代码:

ssize_t num = index; // index could be -1 in the example of my textbook`

num是一个变量,用于包含遍历返回的索引。然而,在我将此代码复制到C++编译器后,它表示找不到ssize_t的定义。在C++中,我几乎找不到关于ssize_t的定义。我发现它可以在C中使用,但不能在C++中使用。正确的

ssize_t在C++中可以(也不能(使用,就像它在C中可以(而且不能(使用一样多。在这两种语言中都没有这样名称的基本类型,ISO C标准库中也没有ssize_t类型,C++标准库中更没有std::ssize_t

CCD_ 7是在POSIX标准中定义的。如果你的程序是为POSIX系统编译的,那么你可以通过包含定义它的POSIX库的头来使用ssize_t。在非POSIX系统上,这样的头不存在,所以这是不可移植的。除了使用POSIX API的特定于POSIX的模块之外,不应在跨平台程序中使用ssize_t

当您不使用POSIX API时,通常可以用std::ptrdiff_t替换ssize_t

最新更新