2012-11-23 46 views
1

因此,我正在使用C来学习SDL。我在设法让SDL_Init()给出了分段错误。经过一番调查,事实证明,罪魁祸首是我创建了一个函数int connect()。如果我将该函数重命名为其他内容my_connect(),那么一切工作正常。SDL函数名称?

我想到一个名为connect()的函数已经存在于SDL库的某处,并且我的定义正在导致冲突。然而,API没有提及名为connect的函数或任何类似的函数。

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

......或者这仅仅是封装需求的另一个很好的例子吗?

回答

4

所有SDL名称均以SDL_开头。但是,SDL可以调用标准C函数(例如connect)来运行。如果您的应用程序使用该名称创建全局函数,则它将替换标准库中的一个,从而使SDL使用您的而不是全局函数。事实上,使用不同的名称可以解决问题。另一个选择是让你的函数成为静态的(但当然你不需要全局函数)。