1

所以,我正在使用 C 学习 SDL。

经过一番折腾,我设法让 SDL_Init() 给出分段错误。经过一番调查,原来罪魁祸首是我创建了一个函数 int connect()。如果我将函数重命名为其他名称,例如 my_connect(),那么一切正常。

我发现一个名为 connect() 的函数已经存在于 SDL 库中的某个地方,我的定义导致了冲突。但是,API没有提到名为 connect 的函数或类似的函数。

使用 SDL 时我应该避免使用其他名称吗?我在哪里可以找到它们的列表?

...或者这只是需要封装的另一个很好的例子?

4

1 回答 1

4

所有 SDL 名称都以 SDL_ 开头。但是,SDL 可以调用标准 C 函数(例如 connect)来运行。如果您的应用程序使用该名称创建了一个全局函数,它将替换标准库中的那个,从而使 SDL 使用您的而不是全局函数。使用不同的名称确实可以解决问题。另一种选择是使您的函数静态(当然,您不能在全局范围内需要它)。

于 2012-11-23T11:35:30.710 回答