从头文件中读取结构标签?

时间:2018-04-12 23:05:21

标签: c json struct header

所以我想配置不同的结构,我有一个头文件,如:

header.h

typedef struct
{
    uint32_t hola;
    uint32_t adios;

}Signal_t;

typedef struct
{
    bool            goodbye; 
    uint32_t        hello;

} FrameTx_t;

为了做到这一点,在某些时候,在我的源代码中,我将需要检测接收文本要配置哪种结构。 ID。 est:如果我有一个JSON文件在某处:

JSON_File.txt

{"Signal_t" : 
    {
        "hola" :  1024,
        "adios" : 555555 
    }
}

我需要认识到要配置的结构是Signal_t类型。

现在我已经开发了一个简单的代码,在解析文本之后,我可以以字符串格式获取结构的名称,然后我创建了以下函数来确定要配置的结构:

Code.c

int structure_Select(char* structName, int sizeOfStructName) {
char Signal_tName[] = "Signal_t";
char FrameTx_tName[] = "FrameTx_t";
int idx=0;

if ((sizeof(Signal_tName) - 1) == sizeOfStructName) {
    for (idx = 0;idx < sizeOfStructName;idx++) {
        if (Signal_tName[idx] != structName[idx]) {
            break;
        }

    }
    if (idx == sizeOfStructName) { 
        printf("%s", Signal_tName);
        return 0; 


    }
}
if ((sizeof(FrameTx_tName) - 1) == sizeOfStructName) {
    for (idx = 0;idx < sizeOfStructName;idx++) {
        if (FrameTx_tName[idx] != structName[idx]) {
            break;
        }

    }
    if (idx == sizeOfStructName) {
        printf("%s", FrameTx_tName);
        return 1;


    }
} 
}

我可以向你保证它有效;它不会像#34;自动&#34;正如我希望的那样......  我希望程序能够读取头文件并自动识别:&#34;哦好的,所以我处理Signal_t数据类型,然后我会读取两个不同的数据流并将data1分配给Signal_t.hola,将data2分配给Signal_t.adios&#34;

分配显然不是问题;仅从文件中的现有结构确定其名称或区分结构的方式。 到目前为止,我已经考虑过以下可能性,但我已经在其中进行了循环:

o创建一个迷你&#34; C结构解析器&#34;功能

o有没有办法在C中获取我不知道的结构标签的名称?

我愿意接受建议,是否只是我可以处理的想法,而且我没有看到或者你们中是否有人曾经处理类似的问题,而不是使用char变量列表,实际读取结构名称的头文件...提前感谢!

TL; DR:有没有办法阅读结构&#39;标头文件中的标签是否为字符串?

编辑:这就是我对结构标记/类型别名的意思:

//structure to get a rectangle
typedef struct { 
int left; 
int bottom; 
int right; 
int top; 
} rect_t; //this rect_t is what I mean by structure tag... 
//I checked the name and it should be type alias***

0 个答案:

没有答案