我看到了GLUT演示顶部的代码,我对它的功能很好奇。
为什么会有人想要写一个#杂注,而不是仅仅包括库呢?
发布于 2010-10-04 07:17:41
此编译指示允许库作者基于可在编译时分析的一系列标准来定义库导入。例如,您可以链接到不同的库,根据您是否想要链接:
对于杂注表单,所有这一切都可以通过库的某个头文件中的#ifdef预处理器测试来决定。
发布于 2010-10-04 07:16:17
如果您正在分发库,则#pragma非常有用。尤其是当你对不同的构建设置有不同的编译.libs时(例如调试与发布,多线程C运行时与单线程,动态链接库与静态库等)。您可以在代码中使用#ifdef来选择正确的.lib文件,而不是要求用户设置构建环境来选择正确的文件。
它减少了支持时间,因为您的用户无法选择错误的.lib文件。
发布于 2010-10-04 07:20:24
它是一个MSVC-specific pragma,这意味着命名的库将在链接时自动包含。您关于“只包含库”的其余问题表明您没有意识到头文件和库文件之间的区别:头文件(GL/glut.h)描述了编译器在链接时可以预期的函数。库(lib/glut32.lib)提供了这些函数的实现。
正如其他答案所解释的那样,它可以很方便,但我个人认为使用它是一个糟糕的想法,因为它为编写可移植代码增加了另一个障碍(其他平台和编译器可能不支持它)。This question (谢谢,@martin clayton)解释了为什么这不是可移植代码的好主意。
https://stackoverflow.com/questions/3851956
复制相似问题