如果我有这个原型:
int bar(int);
对于编译器我是宣告标识符bar
.
如果我有这样的定义:
int bar(int a) {};
对于编译器我是defining标识符bar
.
一般来说,定义会为对象分配存储空间,但是:
- 函数声明也是如此吗?另外在这种情况下没有分配存储空间?
- 为函数定义分配的存储空间是多少以及何时分配?
附:
C 规范在谈到声明或定义时谈到了它们与标识符的相对关系(即标识符的声明...)
但我也读过文字,其中说变量的声明。
那么是否存在一些差异,或者只是“双向”地表达一种含义?
对于函数,存储分配是在函数第一次调用时完成的。定义本身并不进行存储分配。
还应该注意的是,当函数的返回类型为void
。因此,编译器应该发出警告
int bar(int a) {};
[警告] 控制到达非 void 函数的末尾 [-Wreturn-type]
[警告] ISO C 不允许额外的 ';'在函数之外 [-迂腐]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)