假设我想从一个结构体(来自不同的来源,但都是 uint 8 数据)收集数据到一个数组中,例如:
uint8 myArray[10];
myArray[0] = 2;
myArray[1] = date.day;
myArray[2] = date.year;
myArray[3] = date.month;
myArray[4] = softwrare_majornumber;
myArray[5] = softwrare_minor_number;
myArray[6] = 2;
myArray[7] = 5;
myArray[8] = 10;
myArray[9] = versions.header_v2;
如何以最快的方式在循环内执行此操作?
最佳答案
如果您正在尝试减少代码重复或重复的代码,您可以使用宏捕获此事件。举个简单的例子:
#define SET_MY_ARRAY(A, ...) \
memcpy((A), (uint8_t[]){ __VA_ARGS__ }, sizeof(A))
SET_MY_ARRAY(myArray,
2, date.day, date.year, date.month,
softwrare_majornumber, softwrare_minor_number,
2, 5, 10, versions.header_v2);
这是否会增加可读性是有争议的。
在我的测试中,您的个人初始化导致的移动次数是我的版本的一半。如果初始化性能很重要,您可以只捕获宏中的单独分配。
关于c - 将数据添加到从循环内的结构读取的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58615466/