全局结构不起作用

Global structure doesn't work

我正在用 Xmega 编程,我需要一些在多个文件中使用的标志。 所以我在 h 文件中将标志声明为 extern 并在主文件中将其初始化为全局。

global.h:

#ifndef GLOBAL_H_
#define GLOBAL_H_

typedef struct GLOBAL_FLAGS {
    volatile uint8_t pidTimer:1;
    volatile uint8_t dummy:7;
}GLOBAL_FLAGS;

// declaration
extern GLOBAL_FLAGS gFlags;

#endif

main.c:

#include <avr/io.h>
#include <avr/interrupt.h>
#include "global.h"
#include "hv.h"
#include "pid.h"

// init
gFlags = {.pidTimer = 0, .dummy = 0};

// code....
int main(void){
// code....
// example use of flag
if(gFlags.pidTimer){
        hv_run_pid();
        gFlags.pidTimer = 0;
    }

我在执行此操作时遇到了一些错误。

在我初始化它的地方我得到了这个:

错误:

警告:

在我想使用它的地方,我得到了这个:

错误:

我使用 Atmel Studio 7。

谢谢!

我转了

// init
gFlags = {.pidTimer = 0, .dummy = 0};

// init
GLOBAL_FLAGS gFlags;

并且有效。