ARM 标准C/C++ 运行时库
1.
运行时库的路径
指定方式:
(1)
连接选项
–libpath
(2)
环境变量
ARMLIB
优先级:
libpath
高于
ARMLIB
被指定的路径:
包含
armlib, cpplib
的父路径。
2.
运行时库的命名格式。
C/C++
运行时库格式:
Root_<arch><fpu><dfmt><stack><entrant>.<endian>
Root
取值如下:
c
– ANSI C
及
C++
基本运行时支持。
f
– C/Java
的浮点算术运算支持。
g
– IEEE
的浮点算术运算支持
m
–
超越类数学函数。
cpp
–
无浮点算数运算的高级
C++
算数
cppfp
–
有浮点算数运算的高级
C++
算数
arch
取值如下:
a
– ARM
运行时库
t
– Thumb
运行时库
fpu
取值如下:
f
–
使用
FPA
指令集
v
–
使用
VFP
指令集
-
-
不使用浮点运算指令
dmft
取值如下:
p
–
单纯内存模式(
endian
格式)的双精度格式
m
–
混合内存模式(
endian
格式)的双精度格式
-
-
不使用双精度浮点数。
Stack
取值如下:
u
–
不使用软件的数据栈溢出检查
s
-
使用软件的数据栈溢出检查
-
-
未规定该选项
entrant
取值如下:
&nb
相关文档:
栈:函数调用的时候,在栈中保存局部变量和函数参数等。当函数返回时,自动清除栈。
自由存储区:也称为堆(heap),可以看作大量的内存段。通过 new 操作符分配的内存在堆中。程序结束之前不自动清除自由存储区。需要由程序来负责释放(delete)。
1.
对指向栈上内存的指针调用delete会导致程序Crash。
2.
new 进 ......
有如下程序:
//-----------------
class A
{
public:
A()
{
printf( "base A\r\n" );
}
virtual ~A()
{
printf( "base ~A\r\n" );
}
public:
virtual void VirtualFunc()
{
printf( "base VirtualFunc\r\n" );
};
void Func()
{
printf( "base Func\r\n" );
}
void F1()
{
pr ......
void StraightSelectionSort(int array[], unsigned int n)
{
/*
注:关键字值类型为int,数组的索引是从0开始
1. 初始状态无序区为array【0, n - 1】,有序区为空。
2. 第1趟排序从array【0, n - 1】中找到下标为k的关键字最小值,把array【k】和
array【0】交换。现在无序区为array【1, n - 1】, 有序区 ......
[注]:最近在做UVC描述符的编辑工具,用到很多的结构,为了方便把结构体写成bin文件,需要把结构体中填充的字节去掉,在网上搜索得到这篇文章,感觉挺好的,转过来做个纪念。
结构体(struct)的sizeof值,并不是简单的将其中各元素所占字节相加,而是要考虑到存储空间的字节对齐问题。先看下面定义的两个结构体.
struct
......
Precedence Operator Description Example Overloadable Associativity
1
::
Scope resolution operator
Class::age = 2;
no
none
2
()
()
[]
->
.
++
--
const_cast
dynamic_cast
static_cast
reinterpret_cast
typeid
Function call
Member initalization
Array access
Member access from ......