20101130

长见识

长见识

柳校长讲话,讲教育。
我坐第一排,困的时候看刘老师在那儿批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型函数可以不声明直接调用。

不过,作为代码规范,反对以上两条见识应用在项目中。

No comments: