首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是#杂注注释(lib,“lib/gn32.lib”)?

什么是#杂注注释(lib,“lib/gn32.lib”)?
EN

Stack Overflow用户
提问于 2010-10-04 07:10:37
回答 3查看 1.5K关注 0票数 3

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

为什么会有人想要写一个#杂注,而不是仅仅包括库呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-04 07:17:41

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

  • multithreading打开或关闭;
  • 有问题的库的共享或静态版本;
  • 标准运行时库的共享或静态版本;
  • 调试或发布库;
  • 32位或64位库。

对于杂注表单,所有这一切都可以通过库的某个头文件中的#ifdef预处理器测试来决定。

票数 3
EN

Stack Overflow用户

发布于 2010-10-04 07:16:17

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

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

票数 1
EN

Stack Overflow用户

发布于 2010-10-04 07:20:24

它是一个MSVC-specific pragma,这意味着命名的库将在链接时自动包含。您关于“只包含库”的其余问题表明您没有意识到头文件和库文件之间的区别:头文件(GL/glut.h)描述了编译器在链接时可以预期的函数。库(lib/glut32.lib)提供了这些函数的实现。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3851956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档