extern int munmap (void *__addr, size_t __len) __THROW;
时间: 2023-07-21 12:06:19 浏览: 57
这是一个函数声明,声明了一个名为 `munmap` 的函数,它用于解除映射的内存区域。
函数声明的定义如下:
```c
extern int munmap(void *__addr, size_t __len) __THROW;
```
该函数接受两个参数:
- `__addr`:要解除映射的内存区域的起始地址。
- `__len`:要解除映射的内存区域的长度。
函数返回一个整数值,表示操作的结果。通常情况下,如果操作成功,则返回0;如果操作失败,则返回-1。
需要注意的是,`__THROW` 是一个宏,用于指示该函数不会抛出异常。在标准C库中,通常使用 `__THROW` 宏来修饰不会抛出异常的函数。具体的实现可能根据操作系统和编译器的不同而有所差异。
相关问题
extern int setrlimit (__rlimit_resource_t __resource, const struct rlimit *__rlimits) __THROW;
这个extern关键字用在函数声明上的作用是诉编译器,setrlimit函数的定义在其他地方,文件只是引用而不是定义它。这编译器在编译会将函数的定义和实现链接起来,以便正确地执行函数调。
extern int setrlimit (__rlimit_resource_t __resource,
const struct rlimit *__rlimits) __THROW;
这个声明告诉编译器,setrlimit函数是一个外部函数,返回类型是int。它接受两个参数:__resource和__rlimits,分别是指定资源类型的变量和指向struct rlimit类型的常量指针。__THROW是一个宏,表示该函数不会抛出任何异常。
在某个C源文件中,如果要使用setrlimit函数,只需包含该函数的头文件声明即可,编译器会在链接时找到该函数的实际定义并进行调用。
extern int msgget (key_t __key, int __msgflg) __THROW; extern ssize_t msgrcv (int __msqid, void *__msgp, size_t __msgsz, long int __msgtyp, int __msgflg);这两个有个size有个type分别怎么传?
对于函数`msgget`,`__key`参数是一个键值,用于标识消息队列。`__msgflg`参数是一个标志,用于指定消息队列的属性。这两个参数不涉及消息的大小和类型。
对于函数`msgrcv`,`__msqid`参数是消息队列的标识符。`__msgp`参数是指向接收消息的缓冲区的指针。`__msgsz`参数是接收消息缓冲区的大小。`__msgtyp`参数是接收消息的类型,如果设置为0,则表示接收第一个可用的消息。`__msgflg`参数是接收消息的标志,用于指定接收消息的行为。
因此,消息的大小和类型是通过`__msgp`、`__msgsz`、`__msgtyp`这三个参数来传递的。