是否有可能在严格的程序性程序中避免全局变量?

Pie*_*ten 10 c

作为OO出生和成长的开发人员,我很想知道如何在程序性程序中避免全局状态.

Ore*_*ost 12

你也可以在C中编写面向对象的代码.你没有得到所有的C++好东西而且它很难看,你必须手动传递这个指针(我已经看到self用于此,为了使它与C++兼容) ),但它的工作原理.因此从技术上讲,您不需要纯过程语言中的全局状态,原因与面向对象语言中不需要它的原因相同.你只需要明确地传递状态,而不是像在OO语言中那样隐式地传递状态.

  • 如果做得对,那并不难看.+1,因为你是另外发现的. (4认同)

Mic*_*urr 6

作为示例,请查看C标准库中的文件I/O函数如何使用指向FILE(很大程度上)不透明的对象的指针.或者看看OS API如何处理句柄以及封装信息.程序创建对象,使用作用于这些对象的API并关闭/删除对象 - 所有这些都使用直接C.