语法错误: __asm__ ( "some_code" ::: "cc" )

Syntax error in: __asm__ ("some_code":::"cc")

本文关键字:code some cc 错误 asm 语法      更新时间:2023-10-16

我使用C++进行项目,包括一个c头文件ira.h,如下所示:

#ifdef  __cplusplus
    extern "C" {
#endif
extern inline void disable_irqs() {
    __asm__ __volatile__("torc  #0x80,ccrn":::"cc");
}
extern inline void enable_irqs() {
    __asm__ __volatile__("tandc #0x7f,ccrn":::"cc");
}
#ifdef  __cplusplus
}
#endif

当我编译它时,我得到如下错误:

/usr/local/bin/h8300-hitachi-hms-g++ -DCXX -fno-rtti -fno-exceptions -O2 -fno-builtin -fomit-frame-pointer -Wall -I/brickos/include -I/brickos/include/lnp -I. -I/brickos/boot  -c rcx1.C -o rcx1.o
In file included from PowerFunctionsController.H:32,
             from rcx1.H:27,
             from rcx1.C:21:
/brickos/include/lnp/sys/irq.h: In function `void disable_irqs(...)':
/brickos/include/lnp/sys/irq.h:99: parse error before `::'
/brickos/include/lnp/sys/irq.h: In function `void enable_irqs(...)':
/brickos/include/lnp/sys/irq.h:104: parse error before `::'
make: *** [rcx1.o] Error 1

我能做什么?

GCC 将字符序列:::解析为两个运算符:范围运算符 :: 和冒号:。这是因为它在解析关键字和运算符时匹配最长的序列。如果您不希望这样做,则需要在每个冒号之间添加一个空格,例如: : :