gcc提示:parameter has just a forward declaration
摘要:这是一条gcc编译程序之后的提示“参数仅仅拥有一个前置声明”
1.问题来源
有如下程序,我们使用gcc编译:
[cpp]
#include<stdio.h>
2 int fun(int i,int a;int b)
3 {
4
5 }
6 int main(int argc, char *argv[])
7 {
8 int a=1,b=2;
9 return 0;
10 }
出现如下提示:
[python]
$ gcc test.c
test.c:2:19: error: parameter ‘a’ has just a forward declaration
test.c:2:13: error: parameter ‘i’ has just a forward declaration
问题分析,细心查看就会发现,这是因为a后面是“;”而不是“,”所导致的。 它使用了一个被称为GNU C拓展语法里面的 parameter forward declaration feature的特性。
2.特性介绍
这个特性允许 你能够在实际的形参之前,提前声明一些变量。这种特性常常用于那些具有变长数组的参数的函数的声明之中,例如:
// valid, len parameter is used after its declaration
void foo(int len, char data[len][len]) {}
// not valid, len parameter is used before its declaration
void foo(char data[len][len], int len) {}
// valid in GNU C, there is a forward declaration of len parameter
// Note: foo is also function with two parameters
void foo(int len; char data[len][len], int len) {}
这样定义是不对的:
void fun(int i; int i) {}
因为没有i作为前置声明,并没有在后续的参数中得到体现。另外需要注意,这是GNU C的拓展语法,并不是标准C的语法问题。
补充:软件开发 , C++ ,