1

我有一些宏,
#define dosomething(x) something(x)它被编译成一个dll。我会在构建创建的那个库中拥有那个宏吗?

4

3 回答 3

7

不。

编译器甚至看不到宏。它们在预处理期间被替换文本替换,这发生在最开始。宏是愚蠢的,它们对您或您的动机一无所知。他们甚至不知道你在写什么语言。谨防!

于 2011-08-12T08:17:12.930 回答
4

不。

宏只是源代码级别的(并非如此)精心制作的复制粘贴设备。它们在编译之前被扩展,编译器不知道它们的存在。

如果要将dosomething符号导出到库中,则必须将其声明为函数。

于 2011-08-12T08:15:55.460 回答
3

宏仅由预处理器使用和处理。编译器不使用它们,链接器也不知道它们。所以,答案是否定的。不导出宏。

你需要什么?你不能只#include给头文件吗?

于 2011-08-12T08:16:23.663 回答