Azy759 2016-10-15 01:36 采纳率: 0%
浏览 941
已采纳

c 调用函数时要传递很多零散的参数,看起来很蠢,怎么办,是程序设计问题?

比如:
测试函数A(缓存地址,图像宽度,默认颜色,...){
...
判断某点是否是默认颜色(...)
if(...){
...
判断某点是否是默认颜色(...)
...
测试函数B(...)
}
}

测试函数B(缓存地址,图像宽度,默认颜色,...){
...
判断某点是否是默认颜色(...)
}
BOOL 判断某点是否是默认颜色(缓存地址,图像宽度,默认颜色,...){
...
}

多处要判断颜色,要多个参数,怎么办...
要为一些不关联的数据定义一个结构体吗?好像不太好。
有结构体以后参数还是要一级一级向下传。
要把零散的参数定义成全局变量吗?也不好吧。
全局的东西不该是越少越好吗,这样不简洁。
在主函数中定义子函数,这样不用传参数了。
可是不允许。

怎么办,或者是程序设计问题?

  • 写回答

3条回答 默认 最新

  • hijack00 2016-10-15 08:56
    关注

    这种情况在C语言中是大量存在的,例如在数据库(sqlite)或者一些脚本解释器(Tcl或者lua)中,都会有一个全局变量或者执行全局变量的指针保存当前环境(context)。
    在C++中由于引入了面向对象思想,像你所说的有些参数可以封装到类的内部成员中去,代码可能会看起来更加优雅。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog