如何声明受限函数指针参数

时间:2018-04-01 17:03:45

标签: c function-pointers restrict

我可以声明一个函数指针作为参数的函数,

int bar(int (* a)()) { } // this works

我可以将const限定符应用于此参数

int bar(int (* const a)()) { } // this works

但是当我将restrict限定符应用于此参数时,我收到错误

int bar(int (* restrict a)()) { }

test.c:10:1: error: invalid use of ‘restrict’
 int bar(int (* restrict a)())

我正在使用cc

0 % gcc --version
gcc (GCC) 7.3.0

1 个答案:

答案 0 :(得分:2)

只有指向对象的指针可能是restrict限定的:

  

§6.7.3类型限定符

     
      
  1. 引用类型为对象类型的指针类型以外的类型不应受限制。
  2.   

函数不是对象:

  

§3.15.1对象

     

执行环境中的数据存储区域的内容   它可以代表值