[英]array pointer type for function return
我最近开始大量使用数组指针,因为它大大简化了分配/释放,但是当它的返回类型为 function 时,编译器总是会抛出错误。 这是被接受的:
int (*arr_ptr)[SIZE] = NULL;
但这不是:
int (*)[] foo(void) {
return NULL;
}
编译器抛出此错误:
src/main.c:51:7: error: expected identifier or ‘(’ before ‘)’ token
51 | int (*)[] foo(void) {
| ^
目前我只是 typedef 类型并且它工作:
typedef int(*tdarr_ptr_int)[];
tdarr_ptr_int foo(void) {
return NULL;
}
但这对我来说不是一个合适的长期解决方案,我怎样才能指定这个返回类型而不必 typedef 呢?
C 使用中缀表示法,正如我们从您的第一个示例中看到的那样:
int (*arr_ptr)[SIZE] = NULL;
是正确的,而
int (*)[SIZE] arr_ptr = NULL;
不是。 您可以通过应用相同的原理修复 function 版本:
int (*foo(void))[] {
注意。 人们有时会批评中缀,说后缀更容易,但希望从这个示例中可以清楚地看出,唯一的区别是标识符的位置,事实上,中缀 position 中的标识符可以帮助您了解中间在哪里:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.