- 论坛徽章:
- 5
|
回复 3707# OwnWaterloo
本来看得很欢乐,发现扯到我身上了……
我声明一下,那些代码是业余兴趣,而且是为了improve一个现有模块,所以我写的也是比较用心的。
一开始设置了一个“平台抽象层”(每个平台必须实现的很函数),为了效率等等(同translation unit的static能优化——当然这不是大不了的事情,这年头lto也可以优化非static函数的),我在一个文件里面写了所有平台的代码。后来发现似乎有点大,滚动起来不舒服,就想起来村长的那个方案,分解成了几个.c然后include,感觉——挺舒服的,因为各个.c的结构大致相同,也在一个地方包含,名字也有规律,觉得这样是个比较好的解决方案——除了具体的PAL(平台抽象层)比较隐晦以外(额,我马上就去改,加几个prototype)。
goto那个,我一直觉得正常使用goto是一件很正常的事情(这么正常的一句话听起来像废话= =),我从来不觉得goto有什么问题,是滥用goto有问题。在21世纪,在C语言有充足的控制逻辑(if,do,while,for,函数调用)的前提下,面条式代码本来就不太可能,谨慎使用goto足够了。面条式的前提说的是只有行号和GOSUB的BASIC,那货早期可是连函数都没有的,我们调用函数都是let a = 1, b = 2 : goto 100 这种的…………
总的来说,我觉得村长的方案的确是挺舒服的——这个认知建立在我的项目很小(目前根本没makefile),而且我不愿意维护构建系统的基础上的。include .c的确可能是误用,然而如果你去想了“误用”这个问题,我相信你就不是误用——最多也就是估计错误而已。 |
|