【发布时间】:2015-07-07 18:11:22
【问题描述】:
#include<stdio.h>
void function1(){}
int main(void)
{
function1(1,0.45,'b',"I am trying");
function1();
return 0;
}
这编译得很好。 但是下面显示的是
错误:先在function1中使用arr ....
请注意,我使用的是code::blocks IDE,并以 .c 扩展名保存了该文件。
#include<stdio.h>
void function1(){}
int main(void)
{
function1(1,0.45,'b',"I am trying",arr[12]);
function1();
return 0;
}
对不起,我把它称为数组是个错误。但是{1,2,3,4} 这是一个你会同意的数组..但这也行不通。是bug还是什么?
【问题讨论】:
-
arr声明在哪里? -
那不是数组...
-
GCC 默认编译标志允许 C90 语法。空括号表示“采用未指定的固定数量的参数”。
-
您已定义
function没有参数,但您已声明它采用固定但未指定的数字和类型) 的论点。向它传递参数是无效的,但编译器不需要诊断错误;行为未定义。这样做的能力是不幸的历史倒退。将定义改为void function1(void) { },编译器会诊断错误。 -
@KeithThompson:错字,是的,1989 年。你差点吓到我了,我把你的名字读错了肯。 :-)
标签: c string argument-passing