是否可以仅使用头文件来学习这些功能?

时间:2011-11-23 01:00:23

标签: function header

如果缺少某些特定库函数的适当更新教程(在我的情况下,最新的allegro5),如何自己学习如何调用和使用这些函数?头文件中是否有一些线索?

提前致谢

1 个答案:

答案 0 :(得分:3)

头文件将为您提供正确编译具有这些功能的程序所需的最低限度信息。它有类型,常量和函数原型。没有(缺少评论)将解释如何正确使用这些功能,以及如何调用它们。

常规

例如,如果您看到:

int do_something(int n, const char* desc);

您只能推断需要传递整数n和(C)字符串desc。该函数也返回一个整数。

更复杂的例子:

typedef struct {
    int foo;
    double bar;
} blam_t;

void munge(blam_t info);

您知道munge接受一个blam_t类型的参数,它是一个自定义结构,如上所述。您可以使用它来创建blam_t变量并将其传递给munge()

blam_t myvar;
myvar.foo = 42;
myvar.bar = 0.67;

munge(myar);

Allegro5

如果我们查看include/allegro5/display.h的来源,我们会看到以下内容:

AL_FUNC(void, al_set_new_display_flags, (int flags));

这是一种定义函数的罕见方法。他们使用macro AL_FUNC来定义它们的功能。我们看到(通过点击它)AL_FUNC被定义为:

#define AL_FUNC(type, name, args)               type name args

所以第一个例子基本上变成了:

void al_set_new_display_flags(int flags);

我们可以用一个整数参数调用它。

如果没有任何文档,您只能希望通过尝试这些功能来学习。然后,这就变成了一项逆向工程任务。