# 常量和枚举类型(const&enum)
文件级的全局的 IDL 常量类型将映射成文件级的 C++的静态常量类型,例如:
//IDL
const long MaxLen = 4;
1
2
2
将映射成:
//C++
static const long MaxLen = 4;
1
2
2
IDL 枚举类型将映射成 C++中对应的枚举类型。例如:
//IDL
enum Color { blue,green};
1
2
2
将映射成:
//C++
enum Color { blue, green, IDL_ENUM_Color = 99999 };
1
2
2
# IDL 定义示例
接口定义语言(IDL)字符串类型在 idl 文档中定义(以结构体为例):
const long MaxLen = 4;
enum Color { blue,green};
struct UserDataType{
Color c;
long l;
};
1
2
3
4
5
6
2
3
4
5
6
# 代码示例
生成测试用例后在 pub.cpp 中创建数据样本后添加赋值语句:
/* 6. 创建一个数据样本 */
/* 建议:该数据需要申请空间后使用,使用后用户需要调用delete_data进行内存等资源的释放*/
UserDataType *instance = NULL;
instance = UserDataTypeTypeSupport::create_data();
//赋值
instance->c = Color::blue;
instance->l = MaxLen;
1
2
3
4
5
6
7
2
3
4
5
6
7
# 数据收发示例:
图 1 为使用 IDL 定义示例 中结构体生成的测试 demo,在 Windows 系统上启动发布端、在 Linux 系统启动订阅端后数据收发情况:
在 c 赋值为 Color::blue 后打印的值为 Color::blue 对应的编号 0,l 值为 4。
图 1 常量和枚举类型数据收发示例(Windows->Linux)
图 2 为使用 IDL 定义示例 中结构体生成的测试 demo,在 Windows 系统上启动订阅端、在 Linux 系统启动发布端后数据收发情况。
图 2 常量和枚举类型数据收发示例(Linux -> Windows)