当编译c++程序时,首先发生的是预处理器 阶段,实际上是个文本编辑阶段。最终得到的是一个可以送给compiler的文本。
自定义macro:
一般在visual studio 的项目属性中,选择所有配置,在c/c++选项里面选择预处理器,加上自己定义的宏,比如,Apple;
然后在cpp中可以利用,
#ifdef Apple
(do something)
#else
(do something)
#endif
这个时候,Apple已经在预处理器里面定义,所以直接进入第一个()。
还有很多宏,比如__declspec:
是Microsoft-specific attribute that allows you to specify storage-class information,
常用的两个storage-class attributes,是dllimport 和 dllexport,这两个告诉编译器 函数或 object 到底是 import 还是 export from DLL。
实际上就是DLL的客户接口,不需要用.def 文件与dll进行交互。
__declspec(dllimport)是一个 storage-class specifier,告诉编译器 函数或object或数据类型是 定义在外部dll中的。
使用dllexport将符号标记为从DLL导出,并使用dllimport将导出的符号导入到另一个文件中。