全局结构不起作用
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;
}
我在执行此操作时遇到了一些错误。
在我初始化它的地方我得到了这个:
错误:
gFlags 的类型冲突
字段名称不在记录或联合初始值设定项中
警告:
数据定义没有类型或存储class
type 在 'gflags'
的声明中默认为 'int'
在我想使用它的地方,我得到了这个:
错误:
- 请求成员 'pidTimer' 不是结构或联合
我使用 Atmel Studio 7。
谢谢!
我转了
// init
gFlags = {.pidTimer = 0, .dummy = 0};
至
// init
GLOBAL_FLAGS gFlags;
并且有效。
我正在用 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;
}
我在执行此操作时遇到了一些错误。
在我初始化它的地方我得到了这个:
错误:
gFlags 的类型冲突
字段名称不在记录或联合初始值设定项中
警告:
数据定义没有类型或存储class
type 在 'gflags'
的声明中默认为 'int'
在我想使用它的地方,我得到了这个:
错误:
- 请求成员 'pidTimer' 不是结构或联合
我使用 Atmel Studio 7。
谢谢!
我转了
// init
gFlags = {.pidTimer = 0, .dummy = 0};
至
// init
GLOBAL_FLAGS gFlags;
并且有效。