【发布时间】:2016-07-12 11:16:04
【问题描述】:
有没有一种方法可以在 C 语言中实现访问说明符,例如“private”、“protected”。我在互联网上遇到了关于使用“静态”和“ifdefs”使函数仅在某些其他函数中可用的解决方案。
除此之外,是否有任何 C 实现等效于在 C++ 类中使用私有和受保护的访问说明符?
【问题讨论】:
-
C 已经完成,所以你应该可以。问题是是否值得付出努力,代码是否仍可维护。如果您想要 C++,请使用 C++,而不是 C。它们是不同的语言。 (见鬼,为什么没有人要求在 SQL 中使用 inline-Assembler?)
-
@Olaf 在 C 中进行 OOP 是完全合理的,对于任何复杂的 C 项目,我认为这是最好的方法。缺点是需要更多样板代码,并且编译器无法检测到 C++ 编译器会检测到或根本不允许等效代码的部分错误。 C++ 风格的 RAII 也不可用。好处是,程序员可以完全控制代码中发生的事情,没有隐式代码执行(没有异常或隐式构造函数和析构函数),并且 vtable 也由程序员直接控制。
-
@Olaf 图灵完整性与含糖语言功能无关。
-
@hyde:我反对尝试用大锤在 C 中实现 C++ 特性。并且使 C 代码膨胀到可维护性之外(顺便说一句,这也适用于宏)。如果您查看我的历史,您可能会注意到我非常支持 C 反对 C++在合理的情况下。 OP 显然超越了这一点(不是我从来没有这样做过;这是一个永久的诱惑)。
-
@Olaf 访问说明符在定义上是糖——它们是不允许程序做以前不能做的任何事情的语言结构。