loucat 发表于 2014-1-9 19:41:39

请教下子函数应该怎么写啊,传递变量有什么要求

下面的程序有什么问题呢,为什么编译不通过?
int i = 0;

void setup()
{
Serial.begin(9600);
}

void loop()
{
catch();
Serial.println(i);
delay(1000);
}

int catch(int i)
{
i++;
}

loucat 发表于 2014-1-9 19:50:05

错误信息:











sketch_jan09a:4: error: expected unqualified-id before 'catch'
sketch_jan09a.ino: In function 'void loop()':
sketch_jan09a:10: error: expected primary-expression before 'catch'
sketch_jan09a:10: error: expected `;' before 'catch'
sketch_jan09a.ino: At global scope:
sketch_jan09a:15: error: expected unqualified-id before 'catch'

SaorUicnext 发表于 2014-1-9 20:29:55

int i = 0;

void setup()
{
Serial.begin(9600);
}

void loop()
{
test();
Serial.println(i);
delay(1000);
}

void test()
{
i++;
}

编译通过,catch似乎不能作为函数名

laofuz1024 发表于 2014-1-9 20:34:09

本帖最后由 laofuz1024 于 2014-1-9 20:47 编辑

catch 函数的定义

是有一个参数,是int 类型的变量

还有一个返回值,是返回 int 类型的变量,但是catch函数定义有返回值,内部就没返回语句是不对


而你在loop调用catch函数时,没有传参数。

根据你的函数来看,你想实现的功能,没必要这个函数

而我对C语言的了解,函数中 形参是基本类型的,那是值传递,不是地址传递
在函数内部对i值的改变,不影响函数外部的值 ,也就是说,catch函数外,i值都是0

loucat 发表于 2014-1-9 20:49:08

laofuz1024 发表于 2014-1-9 20:34 static/image/common/back.gif
catch 函数的定义

是有一个参数,是int 类型的变量


本身就是不明白怎么写子函数所以做的试验程序,功能当然比较简单。
呵呵

loucat 发表于 2014-1-9 20:52:05

SaorUicnext 发表于 2014-1-9 20:29 static/image/common/back.gif
int i = 0;

void setup()


太谢谢了。

能再解释下参数传递吗

loucat 发表于 2014-1-9 21:04:19

已经解决了,多谢。:D
页: [1]
查看完整版本: 请教下子函数应该怎么写啊,传递变量有什么要求