You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言函数原型作用域中形参的声明点规则咨询

C语言函数原型作用域中形参的声明点规则

在C语言(含C99及后续标准)中,函数原型作用域内的形参声明点严格遵循左至右的顺序:每个形参的名称从其自身的声明位置开始,到整个原型结束前都是可见的,后续的形参声明可以直接引用之前已经声明的形参名,但反之不行。

对应案例分析

  • 案例1(合法):

    int sum(int n, int a[n]); 
    

    第一个形参n声明后,第二个形参a[n]中的n已经处于可见状态,符合左至右的作用域规则,因此GCC在C99模式下无报错。

  • 案例2(非法):

    int sum(int a[n], int n);
    

    第一个形参a[n]中的n此时还未被声明(n是第二个形参,在a[n]之后才完成声明),违反了左至右的可见性规则,所以GCC会报错提示‘n’ undeclared here (not in a function)。

标准依据

C99标准的6.2.1节(标识符的作用域)明确规定:函数原型参数列表中的每个标识符,其作用域始于自身的声明点,终止于原型的末尾;参数列表中的声明按顺序处理,后续参数可引用之前已声明的参数标识符,而未声明的标识符无法被前置引用。

内容的提问来源于stack exchange,提问作者Tony L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:36:14