avrogencpp能为模式中的每种类型生成单独的头文件吗
can avrogencpp generate separate header file for each type in schema?
我有两种类型"Company"answers"User",都包括一个常见类型"Address",并且正在尝试生成cpp头文件。我尝试了多种方法,但最终在两个不同的头文件中多次定义了"Address"结构。avrogencpp能否为每种类型生成一个标头,而不是将所有内容都放在一个文件中?
这是我所能做到的:
1( 已创建示例.avdl
@namespace("test")
protocol Simple {
record Address {
string street;
string state;
string zip;
}
record Company {
string name;
Address address;
}
record Employee {
string firstName;
string lastName;
Address address;
}
}
2( 使用avro工具生成模式文件:avro-tools idl2schemata sample.avdl
3( 使用avrogencpp生成标头:
avrogencpp -i Address.avsc -o address.h
avrogencpp -i Employee.avsc -o employee.h
avrogencpp -i Company.avsc -o company.h
现在,问题是employee.h和company.h都多重定义了struct Address
,因此无法一起编译。
avrogencpp
既不是一个智能程序,也不是Avro的整个C++API。对于正常的代码,几乎总是需要一些后处理技巧。
在这种情况下,最好的办法是编辑生成的company.h
和employee.h
文件:删除冗余代码(Address
和codec_traits<Address>
结构(并插入
#include "address.h"
在顶部的includes中。(事实上,您可以用这个来替换生成的includes,因为每个生成的头文件都有相同的includes集。(
相关文章:
- 用C++在单独的头文件中完成函数体
- 如何使用单独文件中的派生类访问友元函数对象
- avrogencpp能为模式中的每种类型生成单独的头文件吗
- 如何将 2 个类分成单独的 .h 文件并正确设置它们
- 单独文件中各种 c++ 类的标头出现问题
- 如何在单独文件中定义的成员函数中使用成员变量
- 试图将两个类放在同一命名空间中的单独文件中,但只有#1个#Class类作品
- 包括arduino中单独文件中的函数
- 视觉对象包括 C++ 中单独文件夹中的文件
- C 向量排序 .h .cpp中的单独文件
- 与构造函数、类和单独文件混淆
- GST_DEBUG:如何将日志保存在应用程序内线程的单独文件中
- 类在单独文件中的奇怪行为
- 单独文件中的C++内部模板类
- 从单独文件(C++)中的用户输入数据创建矢量
- 将函数添加到单独文件的正确方式
- C++:链接器错误:未定义的引用仅指向在单独文件中定义的一个特定类成员
- 实例化单独文件中的类
- 将对象文件放入GNU make的单独文件夹中
- 如何初始化对在单独文件中声明的类的引用