完整声明器乃 不是其它声明器所属部分 的一种声明器。(我翻译得还不如洋文易懂,遗憾)
我查了一下C11,标准上说
A full declarator is a declarator that is not part of another declarator. The end of a full declarator is a sequence point.
其实主要是说后一句,完整声明器后面是有序列点的。
在 https://zh. 上有个示例
int (*(*foo)(double))[3] = NULL;
// 类型指定符是“int”
// 1. 声明器“ (*(*foo)(double))[3] ”是数组声明器:
// 所声明类型是“ 3 个 int 的数组的 /嵌套声明器/ ”
// 2. 嵌套声明器是“ *(*foo)(double)) ”,是指针声明器
// 所声明类型是“ /嵌套声明器/ 指向 3 个 int 的数组的指针”
// 3. 嵌套声明器是“ (*foo)(double) ”,是一个函数声明器
// 所声明类型是“ /嵌套声明器/ 接受 double 并返回指向 3 个 int 的数组的指针的函数”
// 4. 嵌套声明器是“ (*foo) ”,是一个(有括号,函数声明器所要求)指针声明器。
// 所声明类型是“ /嵌套声明器/ 指向接受 double 并返回指向 3 个 int 的数组的指针的函数的指针”
// 5. 嵌套声明器是“ foo ”,是一个标识符。
嵌套声明器 就不是 a full declarator