当前位置:编程学习 > C/C++ >>

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++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,