# 取别名(typedef)
IDL 中的类型定义直接对应于 C++中的类型定义。例如,如下定义 IDL 的类型定义:
//IDL
typedef string myString;
1
2
3
2
3
将映射成下列 C++的类型定义:
//C++
typedef char* myString;
typedef const char* myString_IDL_const;
1
2
3
4
2
3
4
# IDL 定义示例
接口定义语言(IDL)字符串类型在 idl 文档中定义(以结构体为例):
typedef string myString;
struct UserDataType{
long l;
myString str;
};
1
2
3
4
5
2
3
4
5
# 代码示例
生成测试用例后在 pub.cpp 中创建数据样本后添加赋值语句:
/* 6. 创建一个数据样本 */
/* 建议:该数据为new出来的,使用后用户需要调用delete_data进行释放内存*/
instance = UserDataTypeTypeSupport::create_data();
instance->l = 1;
char str[10] = "mystr";
strcpy(instance->str, str);
1
2
3
4
5
6
7
2
3
4
5
6
7
# 数据收发示例
图 1 为使用 IDL 定义示例中结构体生成的测试 demo,在 Windows 系统上启动发布端、在 Linux 系统启动订阅端后数据收发情况。
图 1 聚合体数据收发示例(Windows->Linux)
图 2 为使用 IDL 定义示例 中结构体生成的测试 demo,在 Windows 系统上启动订阅端、在 Linux 系统启动发布端后数据收发情况。
图 2 聚合体数据收发示例(Linux -> Windows)