Visual中#pragma comment(user)和gcc中#pragma Comment的目的

Posted

技术标签:

【中文标题】Visual中#pragma comment(user)和gcc中#pragma Comment的目的【英文标题】:Purpose of #pragma comment(user) in Visual and #pragma Comment in gcc 【发布时间】:2014-08-29 17:59:19 【问题描述】:

Visual c++ 和 gcc 都有这些指令,它们定义为“用于向可执行文件添加注释”。这样做的具体目的是什么?似乎这些 cmets 会以二进制形式嵌入某处,并且无法在可执行文件中找到。它们是否可以以任何方式检索或有用?

【问题讨论】:

gcc equivalent of #pragma comment 的可能重复项 检查这个:support.microsoft.com/kb/153901. 在您的other question 中有一个answer,它涵盖了 gcc 的实际作用。恕我直言,再次提出此问题以编辑您的原始问题并在那里进行详细说明和讨论是不合适的。 【参考方案1】:

您似乎误读了此#pragma 的描述。微软的文档说:

在目标文件中放置一般注释。 cmetstring 参数包含注释的文本。链接器会忽略此评论记录。

至少根据这个文档,看起来(因为链接器忽略了记录)这样的注释只会将字符串嵌入到目标文件中,而不是可执行文件中。

显而易见的目的是将版权字符串之类的内容嵌入到作为库提供的目标文件中,供开发人员使用。此类库通常获得许可,允许开发人员将库中的目标文件链接到可执行文件中,但自己重新分发目标文件。

在这种情况下,如果开发人员将目标文件链接到可执行文件,则版权声明将消失(如果许可证需要,则由开发人员提供归属),但如果他们重新- 分发目标文件,原始版权声明将保持不变,或多或少像数字水印。

【讨论】:

以上是关于Visual中#pragma comment(user)和gcc中#pragma Comment的目的的主要内容,如果未能解决你的问题,请参考以下文章

pragma comment的使用

#pragma comment(lib,"xxx.lib")

Additinal Dependencies和#pragma comment(lib,"*.lib")的分析

VS 2010 - #pragma comment (lib, XX) 有效,Additional Dependencies 无效。为啥?

如何在 Visual Studio 中自动缩进 #pragma 指令

C++:#pragma comment(lib, "XXX") 实际上对“XXX”做了啥?