我最近在C中使用了函数指针.
继续回答你自己的问题的传统,我决定对那些需要快速深入研究这个主题的人进行一些基本的总结.
假设我必须使用C(没有C++或面向对象的编译器)并且我没有动态内存分配,我可以使用哪些技术来实现类,或者类的良好近似?将"类"隔离到单独的文件中总是一个好主意吗?假设我们可以通过假定固定数量的实例来预分配内存,或者甚至在编译时将每个对象的引用定义为常量.随意假设我将需要实施哪个OOP概念(它会有所不同)并为每个概念提出最佳方法.
限制:
我最近遇到了一个同事的代码,看起来像这样:
typedef struct A {
int x;
}A;
typedef struct B {
A a;
int d;
}B;
void fn(){
B *b;
((A*)b)->x = 10;
}
Run Code Online (Sandbox Code Playgroud)
他的解释是,因为它struct A是第一个成员struct B,所以b->x会b->a.x提供更好的可读性.
这是有道理的,但这被认为是好的做法吗?这会跨平台工作吗?目前这在GCC上运行良好.
来自OO背景(C#/ java)我正在寻找资源来学习如何很好地设计纯C程序.
虽然我熟悉C的语法,并且我可以编写小程序,但我不确定采用更大应用程序的方法,以及采用何种技术.你们可以推荐的任何东西.
编辑:我很高兴完全放弃OO用于C语言编程,我的兴趣是学习如何在没有OO的情况下构建程序,我想学习用C等过程语言设计程序的好方法.
是否可以使用C建模继承?怎么样?示例代码将有所帮助.
编辑:我希望继承数据和方法.仅靠集装箱船无济于事.可替代性 - 使用基类对象工作的任何派生类对象 - 是我所需要的.
我很舒服C.但需要学习GObject和Glib进行gstreamer.我在网上找到的只是Gobject参考手册.它很好,但寻找Gobject/Glib的教程,主要关注gstreamer.
所以请分享任何其他资源来学习滑稽和gobject.
我正在与一位同事谈论C和C++,他声称C是面向对象的,但我声称它不是.我知道你可以在C中做类似面向对象的事情,但C++是一种真正的面向对象语言.
你的想法是什么?
此外,它引发了关于谁决定面向对象意味着什么的讨论,并且很难说出面向对象的真正意义.你对此有何看法?
我来自java背景(来自我的CS课程)和一个学期的C++.我刚刚为我的Co-Op完成了一个纯C的OpenCV项目,所以我提问这个问题有点晚了.
纯C的设计流程和编码标准是什么?
我熟悉面向对象的编程,设计和最佳实践.我只是在像C这样的非面向对象语言上有点不知所措.每个变量和函数似乎都是全局的.这让我感觉真的很乱.
c ×10
oop ×5
class ×1
coding-style ×1
embedded ×1
glib ×1
gnome ×1
gobject ×1
gstreamer ×1
inheritance ×1
object ×1
polymorphism ×1
standards ×1
struct ×1