void write(const char* string) {
// ...
}
void write(const char* string);
write("Hello world.\n");
但为了清楚起见,我不想只使用write()
...而是使用console.write()
或Console.write()
之类的内容。这可能吗?
我真的不想使用console_write()
,除了美学之外别无他法。
我是C的初学者,但精通C#。这是我在做OS开发的基础教程时想到的,我在使用更适合C开发的交叉编译器。事实上,如果有可能,我宁愿在C中这样做,也不要与C ++混合。
答案 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:“最好以最常用的方式使用每种编程语言自然地处理自己。“ :)