<p>宏可以用预处理器参数定义,这就是为什么在任何地方都看不到它们。对于Microsoft编译器,则使用/D参数。在</p>
<p>/D与源代码文件开头的#define指令具有相同的效果,只是/D在命令行上去掉引号,#define保留引号。在</p>
<p><a href="http://msdn.microsoft.com/en-us/library/hhzbb5c8.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/hhzbb5c8.aspx</a></p>
<p>如果gcc是-D,请检查此参考链接:</p>
<p><a href="https://www.daniweb.com/software-development/c/threads/348802/passing-string-as-d-compiler-option" rel="nofollow">https://www.daniweb.com/software-development/c/threads/348802/passing-string-as-d-compiler-option</a></p>
<p>延迟加载是一种机制,它只在库被使用时加载,而不是在应用程序启动之前由操作系统执行。它可以节省宝贵的内存和加载时间,因为(取决于代码流)dll可能根本没有加载。在</p>
<p>如果宏被定义了,那么这段代码试图通过自身实现延迟加载。Microsoft linker可以自动为您完成工作(即您不需要编写任何程序)。请记住,这不是平台的一个特性,而是一个链接器特性。在</p>
<p>检查此参考:
<a href="http://en.wikipedia.org/wiki/Dynamic-link_library#Delayed_loading" rel="nofollow">http://en.wikipedia.org/wiki/Dynamic-link_library#Delayed_loading</a></p>
<p>如果你想添加链接器的代码,你可以用它来指示微软。在</p>
<p>您可以使用/DELAYLOAD参数来执行此操作,如本文所述:</p>
<p><a href="http://msdn.microsoft.com/en-us/library/yx9zd12s.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/yx9zd12s.aspx</a></p>
<p>如果找不到dll,只需确保捕捉到正确的异常和钩子。在</p>