【发布时间】:2014-11-16 05:24:02
【问题描述】:
我目前遇到以下结构的问题:
typedef struct __attribute__((__packed__)) rungInput{
operation inputOperation;
inputType type;
char* name;
char numeroInput;
u8 is_not;
} rungInput;
我在 for 循环中创建了多个类似上面的结构,然后根据我的程序逻辑填写它们的字段:
while (a < 5){
rungInput input;
(...)
然后,当我完成适当地填充结构的字段后,我会尝试将完成的结构复制到这样的数组中:
rungArray[a] = input; //memcpy here instead?
然后我再次遍历我的循环。我遇到了一个问题,我的结构似乎都具有相同的 name 值,尽管显然已经经历了不同的代码段并为每次循环迭代为该字段分配了不同的值。
例如,如果我有三个具有以下名称的结构:“SW1”“SW2”SW3”,在我完成将它们添加到我的数组后,我似乎让所有三个结构都指向值“SW3” . 这是否意味着我应该调用malloc() 来手动分配每个结构中的每个指针,以确保我没有多个指向相同值的结构或者我做错了什么?
【问题讨论】:
-
请贴出实际代码sn-p。
-
为什么对
__attribute__((__packed__))及其亲属如此着迷?它们被滥用而不是被使用,尤其是在所示示例中。 -
不要使用
__attribute__((__packed__)),尤其是包含指针的struct(它很可能会大大降低您的代码速度)。
标签: c arrays pointers struct memcpy