在调用方法时如何在C中使用类名

时间:2017-04-28 06:32:57

标签: c class namespaces globals

console.c中

void write(const char* string) {
   // ...
}

console.h

void write(const char* string);

myapp.c

write("Hello world.\n");

但为了清楚起见,我不想只使用write() ...而是使用console.write()Console.write()之类的内容。这可能吗?

我真的不想使用console_write(),除了美学之外别无他法。

背景

我是C的初学者,但精通C#。这是我在做OS开发的基础教程时想到的,我在使用更适合C开发的交叉编译器。事实上,如果有可能,我宁愿在C中这样做,也不要与C ++混合。

1 个答案:

答案 0 :(得分:2)

您可以使用struct中的函数指针。

您可以创建例如一个struct console,其中有一个指向函数的指针:

typedef struct Console {
    void (*write)(const char*);
    //...
} Console;

您稍后将其分配给该函数:

//function declaration
void write(const char*);
//...
Console console;
console.write = &write;
console.write("writing something to console");

如果你的编译器能够C99你想要跳过赋值,你可以使console对象全局并分配它的内部结构如下:

void write(const char*);
struct Console {
    void (*write)(const char*);
} c = { &write };

因为我首先创建了这个评论,后来创建了一个删除评论的答案,@ user694733回复了,我想说我同意user694733:“最好以最常用的方式使用每种编程语言自然地处理自己。“ :)