库(.tlb)文件中宏的作用域
Scope of a macro in a library (.tlb) file?
假设我们在.cpp文件中定义了一个宏"HELLO",并用它构建了一个.tlb文件。当我在另一个c++项目中导入这个.tlb文件时,我有权访问该宏吗?
默认情况下,如果在.c文件中定义了宏,则作用域在该文件中。如果宏是在.h文件中定义的,那么包括它的每个人都可以访问该宏。只是想知道即使通过.tlb文件,行为是否相同…/
类型库只存储类型信息(接口和类声明、typedef和其他元数据(,而不是代码。代码的实现是在相应的库(DLL(或服务器(EXE(中定义的。这个mean的类型库只告诉客户端在哪里查找代码。它们不提供代码。这就是为什么宏不能导出到tlb的原因。
正如Aschratt所说,宏不存储在类型库中。但是,如果宏是整数常量,则可以在IDL文件中使用枚举:
enum Colors
{
White = 1,
Yellow = 2,
BLue = 3
}
这适用于所有语言。例如,如果在C#中使用类型库,则会将枚举视为C#枚举。
如果类型库仅用于特定的C++客户端,则可以使用cpp_quote IDL属性在生成的标头中发出代码,然后使用#include指令来包含该标头,而不是使用#import基于类型库生成新标头。
相关文章:
- 未在此作用域中声明函数,即使存在头文件也是如此
- 如何在 c++ 中创建一个可调试的文件作用域(静态?)类
- 文件作用域中的静态变量
- 是头文件全局作用域中的变量
- 如何在与 c++ 中定义的函数作用域相同的文件中限制函数作用域
- 从文本文件中读取Floats直到超出ifstream作用域c++
- 未在作用域中声明头文件中的变量
- 为什么文件作用域静态变量必须初始化为零
- 使用文件作用域的c++静态函数
- 两个不同的.cpp文件中的C/ c++作用域
- c++双删除文件作用域变量,链接问题
- 将.txt文件中的字符串输出到成员方法局部作用域之外的动态数组
- 在类作用域内定义方法时,除非在原始 cpp 文件中的其他位置调用方法,否则项目不会编译
- c++在文件级创建作用域
- 库(.tlb)文件中宏的作用域
- c++在编译时文件作用域对整个程序是全局的吗?
- 静态成员变量文件作用域
- c++中不一致的文件作用域变量行为
- 在头文件中声明时未在作用域中声明
- 多个c++文件和变量作用域