2017-05-11 18 views
-1

我想初始化这种类型的结构,但它不会工作。任何想法是什么问题在这里?如何初始化结构内的数组

#include <stdint.h> 
    #define txBufLen 3 

    struct { 
     uint8_t Buf[txBufLen]; 
     uint16_t out; 
     uint16_t len; 
    }txBuf; 


struct txBuf a = {{1, 2, 3}, 5, 3 }; 
+1

“不起作用”是什么意思?如果有错误信息,将它包含在您的问题中是一个好主意。 –

+1

你的意思是什么都行不通?你有错误吗?如果是,那么错误是什么? – FortyTwo

+1

答案就在这里。虽然不是一个确切的重复http://stackoverflow.com/questions/43831826/declare-an-array-of-structures/43831845#43831845 – StoryTeller

回答

0
struct { 
    uint8_t Buf[txBufLen]; 
    uint16_t out; 
    uint16_t len; 
}txBuf; 

此所定义的未标记的结构类型,并立即创建该类型的全局变量。

您需要定义改成这样:

struct txBuf { 
    uint8_t Buf[txBufLen]; 
    uint16_t out; 
    uint16_t len; 
}; 
0

你的代码提供了编译错误 -

struct { 
    uint8_t Buf[txBufLen]; 
    uint16_t out; 
    uint16_t len; 
}txBuf; 

上述声明一个变量txBuf。 以上更改为 -

struct txBuf { 
    uint8_t Buf[txBufLen]; 
    uint16_t out; 
    uint16_t len; 
};