typedef int* ptr_t;
int target;
const ptr_t a = ⌖
*a = 6; //OK
a = ⌖ //<- error: assignment of read-only variable ‘a’
显然,指针是常量,而不是指向的值。如果使用#define,则相反。
将修饰符应用于在 typedef 中声明的指针的规则是什么?
举一个实际的例子,考虑代码
void (**foo)(void);
如何对一个类型进行类型定义,将顶级指针限定为 const(例如指向硬件位置),将下一个指针限定为指向函数的 volatile(例如,可由独立硬件修改)指针?
typedef void (**foo)(void)
如果这是我们必须使用的固定声明,我们应该在源代码中进行上述操作吗?