当前位置: 首页 > 知识库问答 >
问题:

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

臧梓
2023-06-22
#define SVG_IMP_EXP
class SVG_IMP_EXP SVGDocument 

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

共有2个答案

姚胡媚
2023-06-22

跨平台。

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

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

梁丘钊
2023-06-22

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

 类似资料:
  • #define 叫做 宏定义命令,它也是C语言预处理命令的一种。所谓 宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。 我们先通过一个例子来看一下 #define 的用法: 运行结果: 120 注意第 6 行代码 , 被 代替了。 就是宏定义, 为宏名, 是宏的内容(宏所表示的字符串)。在预处理阶段,对程序中所有出现的“宏名”,预处理器都会

  • 代码中的模式通常预示着需要新的抽象。这一规则对于宏代码本身也一样适用。如果几个宏的定义在形式上比较相似,我们就可能写一个编写宏的宏来产生它们。本章展示三个宏定义宏的例子:一个用来定义缩略语,另一个用来定义访问宏,第三个则用来定义在 14.1 节中介绍的那种指代宏。 16.1 缩略语 宏最简单的用法就是作为缩略语。一些 Common Lisp 操作符的名字相当之长。它们中最典型的 (尽管不是最长的)

  • C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实际参数”,这点和函数有些类似。 对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参。 带参宏定义的一般形式为: #define 宏名(形参列表) 字符串 在字符串中可以含有各个形参。 带参宏调用的一般形式为: 宏名(实参列表); 例如: 在宏展开时,用实参 5 去代替形参 y,经预处理程序展开后的语句

  • 9.6.8 系统定义的宏 MASM6.11系统定义了大量的标准宏,程序员能很方便地使用它们。在使用这些系统宏之前,要象C语言那样用伪指令INCLUDE把有关“宏库”文件包含在用户的源程序中。主要的系统宏库文件有:DOS.INC和BIOS.INC,它们存放在系统的include子目录中。 例9.18:使用系统宏定义,编写从键盘上读取一个字符。 解: include dos.inc ;把系统宏定义文件

  • 本文向大家介绍在C++中自定义宏的简单方法,包括了在C++中自定义宏的简单方法的使用技巧和注意事项,需要的朋友参考一下 可以使用宏定义没有返回值的“函数”。例如:       这样的“函数”与真正意义上的函数有本质的区别,因为宏是一个编译前行为,仅仅是编译前对文本进行替换。在Python源码中,经常可以看到下面类似的宏定义:     为什么要使用do { ... } while (0)这样的语法而

  • 本文向大家介绍Objective-C 宏定义详细介绍,包括了Objective-C 宏定义详细介绍的使用技巧和注意事项,需要的朋友参考一下 喜欢读一些开源项目源码的人,总是会发现,大神的代码中总是有那么一些简短而高效的宏定义,点击进去一看,发现晦涩难懂,别说学习了,有时候理解都是一种困难,但是宏定义本身并没有那么难,但是写出一个好的宏当然还是需要丰富的经验和技术,接下来就说一说宏定义,看懂大神的宏