所以我想配置不同的结构,我有一个头文件,如:
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***