1

假设我们在 .cpp 文件中定义了一个宏“HELLO”,并且我们已经用它构建了一个 .tlb 文件。当我在另一个 c++ 项目中导入这个 .tlb 文件时,我可以访问那个宏吗?

默认情况下,如果在 .c 文件中定义了宏,则范围在该文件内。如果宏是在 .h 文件中定义的,那么包含它的每个人都可以访问该宏。只是想知道即使通过 .tlb 文件行为是否相同.../

4

2 回答 2

3

类型库只存储类型信息(接口和类声明、typedef、其他元数据),而不是代码。代码的实现在各自的库 (DLL) 或服务器 (EXE) 中定义。这意味着的类型库只是告诉客户在哪里可以找到代码。他们不提供代码。这就是为什么不能将宏导出到 tlb 的原因。

于 2013-03-19T10:02:30.343 回答
1

正如 Aschratt 所说,宏不存储在类型库中。但是,如果您的宏是整数常量,您可以在 IDL 文件中使用枚举:

enum Colors
{
    White = 1,
    Yellow = 2,
    BLue = 3
}

这适用于所有语言。例如,如果您使用 C# 中的类型库,您会将枚举视为 C# 枚举。

如果类型库仅供特定 C++ 客户端使用,您可以使用cpp_quote IDL 属性在生成的标头中发出代码,然后使用 #include 指令包含该标头,而不是使用 #import 生成基于类型库的新标头。

于 2013-03-19T11:53:52.403 回答