如何解决如何解决错误:atmega328p中的预期标识符或“ asm”前的“”
我写了以下代码:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdint.h>
#include <string.h>
#define Set_bit_(PORT,BIT) PORT|=(1<<BIT)
#define Clr_bit_(PORT,BIT) PORT&=~(1<<BIT)
#define OUTPUT 1
#define INPUT 0
#define HIGH 1
#define LOW 0
void Sei();
void cli();
struct {
volatile unsigned int FLAG_ISR0 : 1;
volatile unsigned int FLAG_ISR1 : 1;
} FLAG_BIT;
int main(void)
{
}
void Sei()
{
Set_bit_(SREG,7);
}
void cli()
{
Clr_bit_(SREG,7);
}
每当我包含中断标头时,编译器就会在一行中显示一个错误,cli
表示
error: expected identifier or '(' before 'asm'
解决方法
#include<avr/interrupt.h>
此文件(source)具有宏sei()
。因此,线
void cli()
扩展为
void __asm__ __volatile__ ("cli" ::: "memory")
这不是您期望的。
您可以为该函数使用其他名称(例如,使名称以大写字母Cli
开头,就像使用Sei
一样)。
但是,由于这些功能的作用与cli()
和sei()
宏完全相同,因此您可能希望完全丢弃它们,而改用宏。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。