什么是#pragma评论(lib,“lib / glut32.lib”)?

时间:2010-10-03 23:10:37

标签: c opengl syntax glut

我在GLUT演示的顶部看到了代码,我很好奇它的功能。

为什么有人想要编写#pragma而不是只包含库?

3 个答案:

答案 0 :(得分:3)

此编译指示允许库作者根据可在编译时分析的一系列条件定义库导入。例如,您可以根据是否要链接来链接不同的库:

  • 打开或关闭多线程;
  • 相关库的共享或静态版本;
  • 标准运行时库的共享或静态版本;
  • 调试或发布库;
  • 32位或64位库。

使用pragma表单,所有这些都可以通过其中一个库头文件中的#ifdef预处理器测试来决定。

答案 1 :(得分:1)

如果您要分发库,#pragma非常有用。特别是如果你有不同的编译.libs用于不同的构建设置(例如调试与发布,多线程C运行时与单线程,DLL与静态库等)。您可以在代码中使用#ifdef来选择正确的.lib文件,而不是要求用户设置其构建环境以选择正确的。{/ p>

它减少了支持时间,因为您的用户无法选择错误的.lib文件。

答案 2 :(得分:1)

这是一个MSVC-specific pragma,这意味着命名库将在链接时自动包含在内。关于“仅包含库”的其余问题表明您并不理解标头和库之间的区别:标头(GL/glut.h)描述了编译器在链接时可以期待的功能。库(lib/glut32.lib)提供了这些函数的实现。

正如其他答案所解释的那样,它可以很方便,但我个人认为使用它是一个可怕的想法,因为它为编写可移植代码增加了另一个障碍(其他平台和编译器可能不支持它)。 This question(感谢@martin clayton)解释了为什么对于便携式代码不是一个好主意。