c++ 类名前的 宏定义的 作用?

#define SVG_IMP_EXP
class SVG_IMP_EXP SVGDocument 

这个代码中 SVG_IMP_EXP 作用是什么,看了些解释,还是不太懂,有没有大佬用通俗一点的语言告知下,还有些是加在 函数前的,又是什么作用?

阅读 2.7k
2 个回答

简单一句话解释是用于实现跨平台的动态链接库(DLL),从而确保符号的可见性和一致性。这其实也可以解释为啥给它define宏定义在开头,因为在C++ 中,编译器需要将函数和变量等不同的符号名称转换成二进制码(你可以看看c primer plus这本书的第五版)。在动态链接的情况下,这些符号以某种方式在内存中进行管理。因此有了它,可以使得在其他编程环境和操作系统中使用该函数或库更加便利。

跨平台。

看宏定义的名字应该是为导出这个类,就是让这个类在编译好的文件中,可以被其它的可执行程序看到。

实现这个功能,不同的平台(操作系统,比如 Windows / Linux ...)下有不同的写法。也有某型平台啥都不用写。所以有个这个东西。它可以方便的在不同平台上被定义为不同的东西。在啥都不需要的平台上,就是想问题中这样,啥都没有。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题