假设我们在.cpp文件中定义了一个宏'HELLO',我们已经构建了一个.tlb文件。当我在另一个c ++项目中导入这个.tlb文件时,我是否可以访问该宏?
默认情况下,如果在.c文件中定义了宏,则作用域位于该文件中。如果在.h文件中定义了宏,则包含它的每个人都可以访问该宏。只是想知道甚至通过.tlb文件行为是否相同...... /
答案 0 :(得分:3)
类型库只存储类型信息(接口和类声明,typedef,其他元数据),而不是代码。代码的实现在相应的库(DLL)或服务器(EXE)内定义。这个意思的类型库只告诉客户在哪里找到代码。他们不提供代码。这就是无法将宏导出到tlb的原因。
答案 1 :(得分:1)
像Aschratt所说,宏不存储在类型库中。但是,如果您的宏是整数常量,则可以在IDL文件中使用枚举:
enum Colors
{
White = 1,
Yellow = 2,
BLue = 3
}
这适用于所有语言。例如,如果在C#中使用类型库,则会将枚举视为C#枚举。
如果类型库仅供特定C ++客户端使用,则可以使用cpp_quote IDL属性在生成的头中发出代码,然后使用#include指令包含该头而不是使用#import基于类型库生成新标头。