我有两个结构,如下所示:
typedef unsigned char byte;
struct my_struct_2 {
int type;
int length; //will be 2 in this case
byte value1; //MSB
byte value2; //LSB
}
struct my_struct_4 {
int type;
int length; //will be 4 in this case
byte value1; //MSB
byte value2;
byte value3;
byte value4; //LSB
}
我想根据“长度”循环遍历结构中的“值”成员,将字节值连接成一个数字。我想知道是否可以使用某种字符串化,以便我可以构造一个具有与此类似的结构的 for 循环:
int value = 0;
for( int i = 1; i <= length; i++)
{
value = value << 8;
value = value & my_struct.value#i#;
}
我想利用结构成员按顺序命名的事实。
我知道我可以通过使用指向第一个值的指针并递增指针来完成此任务。我正在尝试让自己更熟悉字符串化,因此请不要使用类似指针的解决方案。谢谢!
最佳答案
没有办法通过构造这样的名称来循环结构字段。一旦 C 程序被编译,任何有关名称的信息都会消失(忽略调试器的信息);所有偏移量都硬编码到机器代码中。
有一些C preprocessor abuse你可以得到一些有点像在名称上循环的东西,但它并不漂亮,而且绝对不推荐,除非你只是为了挑战而这样做。
关于c - 将循环计数器字符串化以引用 C 结构体的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37399731/