模块化与性能。在C语言里相互矛盾?
有一个功能较复杂的模块A,里面有很多数据
现代编程风格么,一个函数写的太大不好,于是按处理步骤拆分出函数B,C等
可是,B,C里需要A里的很多数据
C语言不允许嵌套函数,因此只好把B,C用到的数据全部作为参数传进去调用
可是B,C这样的函数根本就不会在A以外调用,根本就是这种只在一处调用的内部实现函数,那么无端浪费这样的传参数开销是何苦呢?
举例就类似这样的
void A(...)
{
TYPE_X x;
TYPE_Y y;
TYPE_Z z;
....
....
B(&x,&y,&z);
....
C(&x,&y,&z);
....
}
附带说一下,B,C也不是那种极为短小的小函数,inline不可能对编译器起作用的。(再说inline也不是C89标准,跨平台性都无法保证)
为了性能,难道唯一的办法是放弃函数B,C把代码全堆A里么?我不敢这么乱来,怕代码可读性没了。。