纯粹是因为历史问题吗
举报· 165 次点击
登录 注册 站外分享
14 条回复  
msg7086 小成 2024-8-23 06:42:05
先声明再使用,是因为没有一个机制去提取声明然后做成索引。
你要搞个通过源代码自动生成头文件的东西,那就也能做到了。
James369 小成 2024-8-22 19:54:52
这点确实不好用,特别是同一个文件里面,不声明只能调用写在前头的函数
june4 小成 2024-8-22 19:10:11
要手动同步实现和头文件,不嫌麻烦吗
象 typescript 这种,直接由实现文件自动生成头文件不是更好?
enchilada2020 小成 2024-8-22 17:45:02
@proxytoworld 我记得是 C99 以前只能在开头 从 C99 开始可以在任意地方声明了
Mithril 小成 2024-8-22 17:44:11
是的,纯粹是历史问题。

很久以前这种前置声明可以让你的编译器只遍历一遍编译单元就完成编译。但现在机器性能都很好,一般也都推荐你一个文件不要搞太大。所以你多扫几遍也是能用的。

按照现在的性能来说,就相当于你每个代码文件都几个 G 到十几个 G 那么大,那你这编译器扫几遍你内存就爆炸了。
hangbale 小成 2024-8-22 17:40:30
对编译器友好
darksword21 小成 2024-8-22 17:36:06
刚开始学的时候感觉还挺符合直觉的….可能就是按直觉设计的吧
tianhehechu 初学 2024-8-22 17:35:29
为了提高编译效率,降低实现复杂度,否则编译时就要遍历整个代码去寻找这个函数。C 标准出来时,机器性能没那么高,编译速度很重要。
proxytoworld 初学 2024-8-22 17:34:51
确实是历史原因,c99 标准还只能在函数开头声明变量。
shadowyue 初学 2024-8-22 17:34:04
施法当然要大声的把招式名称念出来才帅气
12下一页
返回顶部