Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么是#布拉格语评论”;什么意思?_C++_Visual C++_Macros_Pragma - Fatal编程技术网

C++ 什么是#布拉格语评论”;什么意思?

C++ 什么是#布拉格语评论”;什么意思?,c++,visual-c++,macros,pragma,C++,Visual C++,Macros,Pragma,下面的#pragma comment是什么意思 #pragma comment(lib, "kernel32") #pragma comment(lib, "user32") 这些链接位于MSVC++中选择的库中。我一直称它们为“编译器指令”。它们指导编译器在编译阶段执行操作、分支,包括如上所示的LIB、禁用特定错误等 编译器公司通常创建自己的扩展以方便其功能。例如,(我相信)微软开始了“布拉格一次”交易,它只在微软的产品上,现在我不太确定 它在您将看到的表中包含“#pragma commen

下面的
#pragma comment
是什么意思

#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")

这些链接位于MSVC++中选择的库中。

我一直称它们为“编译器指令”。它们指导编译器在编译阶段执行操作、分支,包括如上所示的LIB、禁用特定错误等

编译器公司通常创建自己的扩展以方便其功能。例如,(我相信)微软开始了“布拉格一次”交易,它只在微软的产品上,现在我不太确定

它在您将看到的表中包含“#pragma comment”

<> P> >我怀疑GCC,例如,有一套自己的语法规则,

< P> <代码>注释>注释>代码,是一个编译器指令,指示VisualC++在生成的目标文件中留下注释。然后,链接器在处理对象文件时可以读取注释

#pragma comment(lib,libname)
告诉链接器将“libname”库添加到库依赖项列表中,就像您在
linker->Input->其他依赖项的项目属性中添加了它一样


请参见MSDN上的Pragma指令指定操作系统或特定于机器(x86或x64等)的编译器选项。有几种选择。详情见

#杂注注释(注释类型[,“commentstring]”)
具有此格式

有关不同注释类型的详细信息,请参阅

#pragma注释(lib,“kernel32”)
#pragma注释(lib,“user32”)

以上代码行包括链接器需要搜索的库名称(或路径)。这些详细信息作为库搜索记录的一部分包含在对象中 文件


因此,在本例中,链接器搜索
kernel.lib
user32.lib
,并将其包含在最终可执行文件中。

MSDN提供的答案和文档是最好的,但我想添加一个我经常使用的典型案例,例如,需要使用
#pragma comment
在链接时向链接器发送命令

#pragma comment(linker,"/ENTRY:Entry")

告诉链接器将入口点表单
WinMain()
更改为
entry()
,然后
CRTStartup
将控制权转移到
entry()

您误解了问题。他不是问什么是pragma,而是把它们称为注释而不是指令。他特别问什么是
#pragma comment
。这里很尴尬,它实际上是链接器的一个指令。@Hans:嗯,所以在这种情况下我们称它为“链接器指令”?不,它仍然是一个编译器指令。它告诉编译器为链接器留下一个包含该库的注释。是仅MSVC还是GCC/Intel compiler/Clang有类似的内容?是否有添加文件夹路径的选项(如
链接器->常规->附加库目录
)?