2018-02-28 | 研究与探索 | UNLOCK

日志47160228

发现Keil可以编译C++,所以打算写几个类封装stm32的功能。 已经写了一个LED类,使代码简明了许多:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
extern "C"{
#include "stm32f10x.h"
#include "delay.h"
}
#include "led.hpp"


int main()
{

LED::LEDClockInit(RCC_APB2Periph_GPIOB);
LED B12=LED(GPIOB,GPIO_Pin_12);
B12.open();
while(1)
{
B12.reverse();
delay_ms(500);
}
}

另外我想到了一个问题:C++类的成员函数的静态变量是类共有的还是实例私有的?于是写了测试代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>

using namespace std;

class A {
public:
A(int a) :m_a(a) {};
int m_fun(int n);
private:
int m_a;
};

int A::m_fun(int n)
{
static int s_val = 0;
cout << "\tn=" << n << "\n\ts_val=" << s_val << "\n\tm_a=" << m_a << endl;
s_val += n;
return m_a + n;
}

int main()
{
A a1(1), a2(2);
cout << "a1:" << endl;
a1.m_fun(3);
cout << "a2:" << endl;
a2.m_fun(3);
cout << "a1 again:" << endl;
a1.m_fun(3);
cout << "a2 again:" << endl;
a2.m_fun(3);
return 0;
}

结果如下: 果然C++类的成员函数只是默认接受this指针的普通函数,只有一份代码啊。