前言:
现在小伙伴们对“c语言r0”大致比较注重,朋友们都想要分析一些“c语言r0”的相关文章。那么小编同时在网摘上收集了一些有关“c语言r0””的相关内容,希望我们能喜欢,姐妹们一起来学习一下吧!一、简述
强类型枚举(Strongly-typed enums),号称枚举类型,是C++11中的新语法,用以解决传统C++枚举类型存在的缺陷。传统C++中枚举常量被暴漏在外层作用域中,这样若是同一作用域下有两个不同的枚举类型,但含有相同的枚举常量也是不可的,比如:
enum Side{Right,Left};
enum Thing{Wrong,Right};
这是不能一起用的。
另外一个缺陷是传统枚举值总是被隐式转换为整形,用户无法自定义类型。C++11中的强类型枚举解决了这些问题。
—————————————————————————
二、强类型枚举
强类型枚举使用enum class语法来声明,如下:
enum class Enumeration{VAL1,VAL2,VAL3=100,VAL4};
类型:
①空增栈
②空减栈
③满增栈
④满减栈
2、互相调用
(1)汇编调用C
bl +函数名称
void func(void) {}12
_start: mov r0, #1 mov r1, #2 bl func mov r2, #3 .end
调转现象:
(2)C调用汇编
a、文件和文件之间跳转
汇编文件:
满足汇编代码外部调用声明:.global
C文件:
满足C语言调用其他外部C函数声明:函数声明
b、在C语言中专门内嵌一个特殊函数:asm
GNU编译环境下:
asm volatitle {
“” @//汇编代码
:output @//输出寄存器列表
:input @//输入寄存器列表
:change @//修改的寄存器列表
}
说明:
1)如果害怕编译器优化内嵌汇编代码,在__asm__后加__volatitle__防止编译器优化
2)汇编代码必须放在一个"“中间,并且”"中间不能有enter回车换行,只能用\n换行,\t为指令格式对齐,编译器不会检查内嵌汇编语法,而是直接交给汇编器完成
3)输出寄存器列表:ASM汇编—>C语言
4)输入寄存器列表:C语言—>ASM汇编
5)告诉编译器你修改过的寄存器,编译器会自动把保存这些寄存器值的指令加在内嵌汇编之前,再把恢复寄存器值的指令加在内嵌汇编之后
_start: mov r0, #1 mov r1, #2 bl func mov r2, #3 .global func_asmfunc_asm: mov r0, #1 add r0, #1 mov pc, lr .end
void func_asm(void);void func(void){ func_asm();}12345678910
一次跳转:
二次跳转:
最后,如果你想学C/C++可以私信小编“01”获取素材资料以及开发工具和听课权限哦!
标签: #c语言r0