Ainar-G Asked:2021-11-11 04:43:18 +0800 CST2021-11-11 04:43:18 +0800 CST 2021-11-11 04:43:18 +0800 CST 方括号内的限制关键字 772 通过POSIX标准,我发现了 这个声明: #include <aio.h> int lio_listio(int mode, struct aiocb *restrict const list[restrict], int nent, struct sigevent *restrict sig); (强调。)我理解关键字restrict的一般含义,但它在这里是什么意思? c 2 个回答 Voted Best Answer HolyBlackCat 2021-11-11T05:03:20+08:002021-11-11T05:03:20+08:00 成立。C11 草案,6.7.6.3/7: 将参数声明为 ''array of type'' 应调整为 ''qualified pointer to type'',其中 限定符(如果有)是数组类型派生的和中type 指定的那些。[] 原来它void foo(int x[restrict]);相当于void foo(int *restrict x);. 这可以通过并排编写两个声明来检查,并确保编译器不会对不同的类型发誓。 AlexGlebe 2021-11-11T16:09:21+08:002021-11-11T16:09:21+08:00 这样做是为了让您既可以指定数组的大小,又可以指定指向数组的指针是单独的。void f(int a[restrict 9]);声明为指针void f(int * restrict a);时,不能放下数量。 在您的情况下[restrict],方括号仅表示列表list是一个数组,而不是指向单个元素的指针。
成立。C11 草案,6.7.6.3/7:
原来它
void foo(int x[restrict]);
相当于void foo(int *restrict x);
. 这可以通过并排编写两个声明来检查,并确保编译器不会对不同的类型发誓。这样做是为了让您既可以指定数组的大小,又可以指定指向数组的指针是单独的。
void f(int a[restrict 9]);
声明为指针void f(int * restrict a);
时,不能放下数量。在您的情况下
[restrict]
,方括号仅表示列表list
是一个数组,而不是指向单个元素的指针。