C++ “已清除”宏是否导出到.lib文件?
我有一些宏,比如define dosomethingx somethingx,它被编译成dll。我会在构建所创建的库中使用该宏吗?否 宏只是源代码级别的一种不太精细的复制粘贴设备。它们在编译之前被展开,编译器不知道它们的存在 如果要在库中导出dosomething符号,必须将其声明为函数。否 宏只是源代码级别的一种不太精细的复制粘贴设备。它们在编译之前被展开,编译器不知道它们的存在C++ “已清除”宏是否导出到.lib文件?,c++,visual-studio-2008,macros,lnk2019,C++,Visual Studio 2008,Macros,Lnk2019,我有一些宏,比如define dosomethingx somethingx,它被编译成dll。我会在构建所创建的库中使用该宏吗?否 宏只是源代码级别的一种不太精细的复制粘贴设备。它们在编译之前被展开,编译器不知道它们的存在 如果要在库中导出dosomething符号,必须将其声明为函数。否 宏只是源代码级别的一种不太精细的复制粘贴设备。它们在编译之前被展开,编译器不知道它们的存在 如果要在库中导出剂量测量符号,必须将其声明为函数。宏仅由预处理器使用和处理。编译器不使用它们,链接器也不知道它们。
如果要在库中导出剂量测量符号,必须将其声明为函数。宏仅由预处理器使用和处理。编译器不使用它们,链接器也不知道它们。因此,答案是否定的。宏不会导出
你需要什么?您不能只包含给定的头文件吗?宏仅由预处理器使用和处理。编译器不使用它们,链接器也不知道它们。因此,答案是否定的。宏不会导出 你需要什么?您不能只包含给定的头文件吗?否 宏甚至对编译器都不可见。在预处理过程中,它们会被替换文本替换,这发生在最开始的时候。宏是愚蠢的,他们对你或你的动机一无所知。他们甚至不知道你在写什么语言。当心 没有
宏甚至对编译器都不可见。在预处理过程中,它们会被替换文本替换,这发生在最开始的时候。宏是愚蠢的,他们对你或你的动机一无所知。他们甚至不知道你在写什么语言。当心 我有一套编译成库的代码。现在,我试图为这组代码创建一个COM接口,因此我将该库包含在ATL项目的链接器属性中。在构建时,ATL项目在我有这些宏的地方抛出LNK2019未定义外部符号的链接器错误。那么,有没有办法解决这个问题,或者我应该删除宏并将其重新定义为标准函数?这些可能是函数、类或全局变量,但不是宏。你能给出一些代码和更多信息吗?宏定义了assertionfailure\u expr、\u action\if_expr\{\AssertionBreak\uuuu LINE\uuuuuuuuuuuu,Stringifier\uExpr,\uuuuuuuu FILE\uuuuuuuuuu action;\}LNK2019错误表示AssertionBreak外部符号未定义。@Venkatesh Kumar:AssertionBreak不是宏!OnAssertionFailure是,但它不会出现在dll中,因为它已被AssertionBreakI替换。我有一组编译到库中的代码。现在,我试图为这组代码创建一个COM接口,因此我将该库包含在ATL项目的链接器属性中。在构建时,ATL项目在我有这些宏的地方抛出LNK2019未定义外部符号的链接器错误。那么,有没有办法解决这个问题,或者我应该删除宏并将其重新定义为标准函数?这些可能是函数、类或全局变量,但不是宏。你能给出一些代码和更多信息吗?宏定义了assertionfailure\u expr、\u action\if_expr\{\AssertionBreak\uuuu LINE\uuuuuuuuuuuu,Stringifier\uExpr,\uuuuuuuu FILE\uuuuuuuuuu action;\}LNK2019错误表示AssertionBreak外部符号未定义。@Venkatesh Kumar:AssertionBreak不是宏!OnAssertionFailure是,但它不会出现在dll中,因为它已被AssertionBreak替换