0

关于投票
关于C++类的静态变量初始化问题

原帖: http://bbs.21ic.com/club/bbs/list.asp?boardid=42&page=1&t=2846606

ATmega32L 发表于 2008-1-29 11:53 ZLG-MCU ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖


楼主: IAR C++定义一个类static const成员变量,怎么初始化?

IAR C++定义一个类static const成员变量,怎么初始化?

class TTest
{
  static  const  uint16 A="10";                  
  static  const  uint16 B[6]={0,1,2,3,4,5};  //提示错误
}

普通变量可以初始化,数组怎么不行?

hotpower 发表于 2008-2-8 01:33 ZLG-MCU ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

3楼: 类static const成员变量必须在类外初始化~~~楼主真和C++干上了~~

 

求助后的总结报告

签名:

hotpower 发表于 2008-2-8 04:43 ZLG-MCU ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖


4楼: 关于C++类的静态变量初始化问题

//class.h
class SystemObj;

class SystemObj
{
public:
    SystemObj(void);
    void Led1On(void);
    void Led1Off(void);
    void Led2On(void);
    void Led2Off(void);
    void Led3On(void);
    void Led3Off(void);
    void Led4On(void);
    void Led4Off(void);
    void Led5On(void);
    void Led5Off(void);
    void Led6On(void);
    void Led6Off(void);
    void BeepOn(void);
    void BeepOff(void);
    void HibernateInit(void);
    void WatchdogInit(void);
private:
    void Init(void);
    void SysTickInit(void);
    void LedInit(void);
    void BeepInit(void);
private:
    unsigned char Count;
//注意简单的静态变量可以直接定义
//    static const unsigned int abc =123;
    static const unsigned int abc;// =123;
//注意复杂的静态变量不可以直接定义,例如数组
    static const unsigned int xyz[5];// = {1,2,3,4,5};
public:
    volatile unsigned int RamTest;
    union
    {
        volatile unsigned char WorkFlag;
        struct
        {
            unsigned char Watchdog:         1;//允许喂狗
            unsigned char SysTickFlag:      1;//节拍中断
            unsigned char MainLoopFlag:     1;//主循环运行
            unsigned char MainWatchdog:     1;//主循环喂狗
        };
    };
};

//注意不能在class.h里定义这2个静态变量
//const unsigned int SystemObj::abc = 123;
//const unsigned int SystemObj::xyz[5] = {1,2,3,4,5};


//class.cpp
#include "class.h"

const unsigned int SystemObj::abc = 123;//可以在类中直接定义
const unsigned int SystemObj::xyz[5] = {1,2,3,4,5};;//不可以在类中直接定义



* - 本贴最后修改时间:2008-2-8 5:03:43 修改者:hotpower

C++ Primer 第三版中文版

b
系统分类: ARM
用户分类: IAR C++
标签: 无标签
来源: 整理
发表评论 阅读全文(581) | 回复(0)

0

关于投票
IAR AVR菜鸟的第1篇作文

http://bbs.21ic.com/club/bbs/ShowAnnounce.asp?v=&ID=2645238

补充一些IAR AVR常用的H和CPP文件
hotpower 发表于 2007-8-21 00:23 AVR 单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖举报该贴

IAR AVR不错~~~

估计外星人和粉丝同志都很气愤~~~

先得罪了~~~

哈哈~~~忘了声明一下:

转帖必须注明在21ic双龙处."作者是倒塌的菜农"

这是俺做IAR AVR菜鸟的第1篇作文~~~

望各位大侠指教~~~

http://bbs.21ic.com/club/bbs/ShowAnnounce.asp?id=2645238

点击看大图

系统分类: 单片机
用户分类: IAR C++
标签: 无标签
来源: 原创
发表评论 阅读全文(1429) | 回复(3)

3

关于投票
AD转换中的"跳水"滤波算法
hotpower 发表于 2007-8-13 21:07 PIC 单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

8楼: 这种算法的优点是点数无限~~~(附"跳水算法")

当然N>=3.而且最好N>3为好.在N很大时就见其优点了.
例如: 3中取1,4中取2,5中取3...10中取8...252中取"二百五"~~~
全部只用这4个寄存器~~~,当然要考虑累加越界类型选择的问题.
注意: N最好取4, 6, 10, 34, 66, 130等等~~~!!!!!!!!!!!!!!


/*-----------------------------------------------------------
取ADC转换电压
------------------------------------------------------------*/
AdcResult = ADC & 0x3ff;//取ADC转换电压结果
/*-----------------------------------------------------------
  求累加和
------------------------------------------------------------*/
AdcSum += AdcResult;//存累加和
/*-----------------------------------------------------------
  求最大值
------------------------------------------------------------*/
if (AdcResult > AdcMax)
{
  AdcMax = AdcResult;//最大值
}
/*-----------------------------------------------------------
  求最小值
------------------------------------------------------------*/
if (AdcResult < AdcMin)//注意:千万不敢写成else if ()...
{
  AdcMin = AdcResult;//存最小值
}
AdcCount ++;//计数1次
/*-----------------------------------------------------------
  10中取8("跳水评分算法---去掉一个最高分,去掉...最后得分...")
------------------------------------------------------------*/
if (AdcCount >= 10)//每次滤波10点
{
/*-----------------------------------------------------------
  求平均值
------------------------------------------------------------*/
  val = AdcSum - AdcMax - AdcMin;//自然做到了N-2,以下除法变移位
  val *= AdcGain;//乘增益(一定要先乘后除!!!否则精度丢失!!!)
  val >>= 13;//10中取8后除以1024.(直接得到10进制的mV值)
  AdcVal = val;//得到跳水队员分数~~~
/*-----------------------------------------------------------
  下一轮初始化(也是ADC的初始化,这里原本是调用函数的~~~)
------------------------------------------------------------*/
  AdcSum = 0;//一定清0
  AdcMax = 0;//一定取最小值
  AdcMin = 0x3ff;//10位ADC,一定取最大值
  AdcCount = 0;//重新开始
}

哈哈~~~有时间再灌灌它与排序的不同和优缺点~~~
系统分类: 单片机
用户分类: IAR C++
标签: 无标签
来源: 原创
发表评论 阅读全文(1701) | 回复(3)

3

关于投票
IAR菜鸟的首篇AVR C++作业
点击看大图
系统分类: 单片机
用户分类: IAR C++
标签: 无标签
来源: 原创
发表评论 阅读全文(1414) | 回复(4)
总共 , 当前 /