CL.exe的 /D 选项, Preprocessor Macro预处理器宏定义

在看"Inside COM"第10章的代码. MAKEFILE里面有几个标记我没看懂. 去网上搜也搜不到.

/D_OUTPROC_SERVER_

/DWIN32

/DREGISTER_PROXY_DLL

后来突然想起有几个文件的编译依赖于预处理器的宏定义, 这尼玛不会是几个宏定义吧? 果然是...

这Microsoft编译器命令行的蛋疼格式: 为什么编译器选项和参数不用空格隔开呢? 这不容易导致歧义吗

/D选项的文档: https://msdn.microsoft.com/en-us/library/hhzbb5c8.aspx

 

后来根据这几个标记在MAKEFILE中的位置, 顺藤摸瓜找到了使用他们的源文件, 查看这几个源文件的代码, 发现了这么几个宏:

 

#ifdef _OUTPROC_SERVER_ // CFACTORY.H 以及包含了它的源文件: CFACTORY.CPP , REGISTRY.CPP, UTIL.CPP , OUTPROC.CPP

#ifdef WIN32 // SERVER.IDL生成的 dlldata.c , proxy.c , guids.c

#ifdef REGISTER_PROXY_DLL // SERVER.IDL生成的 dlldata.c , proxy.c , guids.c

posted @ 2015-10-29 09:58  rldts  阅读(1431)  评论(1编辑  收藏  举报