柳校长讲话,讲教育。
我坐第一排,困的时候看刘老师在那儿批C语言学生的报告。
一向对计算机系学生的报告心存偏见,就拿来看。
声明一:柳校长的讲话重要而啥啥。我困的原因可能是病理性的,只要不是我讲,
五分钟准睡着,不可控。
本着挑刺的心态读实验报告,当然不会放过每个暇疵。
实验目的、实验步骤、实验结果一如既往的缺少。
不过我挑的是另一个毛病,代码里,函数的声明放在了main函数之中。
我指出。
刘老师说,这是允许的。并补充道:这是声明,不是定义。
是的,C函数中不允许嵌套定义,但是我没有想到可以放个声明。
以前见的代码都是声明在最前,或者干脆定义也在最前。
我回家做了个实验,如下:
--------------------------
int main()
{
int foobar();
foobar();
return 0;
}
int foobar()
{
printf("test");
}
--------------------------
结果真的编译通过了。
长见识了。
我一想,然后我把
int foobar();
放在了
foobar();
之后。
即调用在先,声明在后。
结果也通过了。
这说明:不必声明?
我注释了
int foobar();
变成了这样:
--------------------------
int main()
{
foobar();
return 0;
}
int foobar()
{
printf("test");
}
--------------------------
结果依然能编译通过!
这说明:不必声明?
我就把这事放下了。
事前查了下,非官方的手册,在函数内的声明是允许的。其益处在于,可以局部
的声明函数,避免污染symbol空间。
今天坐校车,又见到了刘老师。
请教。
刘老师说:只有函数类型(返回值类型)是int型的,才可以不声明直接调用。
替换法告诉我们,一次只换一个部件。
当然……偶而也有同时出现两个知识点都不知道的时候啊。
又长见识了一次。
总结。
见识1. 函数可以在函数内声明。作用域在函数内。
见识2. int型函数可以不声明直接调用。
不过,作为代码规范,反对以上两条见识应用在项目中。