QT 多级嵌套结构体并遍历其成员-模板和宏定义

多级嵌套结构体并遍历其成员是一个复杂的任务。为了实现这一目标,可以结合模板和宏定义来简化代码。以下是一个示例,展示了如何使用模板和宏定义来遍历嵌套结构体的成员。

cpp 复制代码
#include <QDebug>
#include <cstdint>

// 假设这些是你的结构体定义
struct BaseMeterParam_Type {
    int param1;
    float param2;
};

struct NetParam_Type {
    QString ipAddress;
    int port;
};

struct TimingUploadParam_Type {
    int interval;
    bool enabled;
};

struct LadderParam_Type {
    int stepCount;
    float stepValue;
};

struct DeviceParam_Type {
    BaseMeterParam_Type mt_BaseMeter;
    NetParam_Type mt_Net;
    TimingUploadParam_Type mt_TimingUpload;
    LadderParam_Type mt_RunLadder;
    uint16_t m_None;
    uint16_t m_Crc16;
};

// 模板函数,用于打印结构体成员
template<typename T>
void printMember(const QString& name, const T& value) {
    qDebug() << name << ":" << value;
}

// 宏定义,用于遍历结构体成员
#define PRINT_MEMBER(member) printMember(#member, deviceParam.member)

// 遍历DeviceParam_Type的成员
void traverseDeviceParam(const DeviceParam_Type& deviceParam) {
    PRINT_MEMBER(mt_BaseMeter.param1);
    PRINT_MEMBER(mt_BaseMeter.param2);
    PRINT_MEMBER(mt_Net.ipAddress);
    PRINT_MEMBER(mt_Net.port);
    PRINT_MEMBER(mt_TimingUpload.interval);
    PRINT_MEMBER(mt_TimingUpload.enabled);
    PRINT_MEMBER(mt_RunLadder.stepCount);
    PRINT_MEMBER(mt_RunLadder.stepValue);
    PRINT_MEMBER(m_None);
    PRINT_MEMBER(m_Crc16);
}

int main() {
    DeviceParam_Type deviceParam = {
        {1, 2.0f},
        {"192.168.1.1", 8080},
        {60, true},
        {10, 0.5f},
        0,
        0xFFFF
    };

    traverseDeviceParam(deviceParam);

    return 0;
}
相关推荐
小师兄吃牛肉20 分钟前
C语言篇:宏
c语言·开发语言
郑同学的笔记34 分钟前
【c++随笔28】strcmp 和 memcmp对比
开发语言·c++
言乐61 小时前
Python根据无法识别搜索词找出可能输入内容模型
开发语言·python·django·virtualenv·pygame
weixin_307779131 小时前
有限产能智能排产与动态重排智能体:从需求解构到技术实现
开发语言·人工智能·算法·架构
kakakahahahaha1 小时前
Windows C盘临时文件清理:%temp%、Windows Temp、Prefetch、Windows.old与hiberfil.sys处理指南
c语言·开发语言·windows
朝朝辞暮i2 小时前
C++ 第 27 课:智能指针 shared_ptr
开发语言·c++·算法
朝朝辞暮i2 小时前
C++ 第 29 课:回调函数 Callback
开发语言·c++·算法
笨笨饿2 小时前
140_AI新手村MCP与Skills是干嘛的
开发语言·人工智能·python·stm32·单片机·嵌入式硬件·物联网
YOLO数据集集合2 小时前
EvoAgent:面向PR研发治理的自进化Multi-Agent Harness系统
java·开发语言·目标检测·agent·自进化
C++ 老炮儿的技术栈4 小时前
main函数之后的调用
c语言·c++·人工智能·qt·mfc·c