将Iterable元素添加到具有混合Struct元素类型的Struct

Adding Iterable Element to Struct With Mixed Struct Element Types


编辑我在c 11中编码.

我为微控制器编写了一些程序,这些程序使用一种结构将项目存储在闪存中.例如

struct save{
    char name[10]="bob";
    int weight=244;
    char food[50]="Taco";
} myVals;

我知道没有内置的方式来迭代结构值,但是我想我应该能够参考结构值添加某种容器,但是找出一个可以接受不同类型的人对我来说是一个挑战.到目前为止,我所能做的最好的事情就是打印出来的功能,如下所示.

struct save{
    char name[10]="bob";
    int weight=244;
    char food[50]="Taco";
    function dump(){
        printf("{\"name\":\"%s\",\"weight\":%s,\"food\":\"%s\"}",name,weight,food);
    }
} myVals;

但是,我真正想要的是一个我可以迭代的对象.我意识到在C中没有反射,但是有没有一种方法可以将它构建到我的结构中?有没有办法创建这样一个容器,我只给它一个类型列表和一个项目列表?

do i need to throw an exception or does the computer automatically throws one at runtime?

编辑

我尝试使用一个元组.我不能在结构中使用它.

struct Data{
    char name[10]="bob";
    int weight=14;
    char food[50]="taco";
    int size=3;
    tuple<char*,int,char*> mylist (name,weight,food);
} data;

因为我得到的错误像

error: ‘name’ is not a type

但是,如果我把它放在它编译的结构之外,我可以得到值.

struct Data{
    char name[10]="bob";
    int weight=14;
    char food[50]="taco";
    int size=3;
} data;

tuple<char*,int,char*> mylist (data.name,data.weight,data.food);

int main(){
    printf("%s",get<0>(mylist));
    return 0;
}

>food

不幸的是,这并没有真正的帮助,因为元组是出了名的难以迭代.


.htaccess .net .net-core 2d 3d actions-on-google actionscript-3 activemq acumatica adobe-xd aframe ag-grid air airflow ajax akka alexa algorithm alignment allure amadeus amazon-cognito amazon-deequ amazon-dynamodb amazon-ec2 amazon-redshift amazon-s3 amazon-web-services amcharts amcharts4