发现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指针的普通函数,只有一份代码啊。