历史上的今天
今天是:2025年03月11日(星期二)
2020年03月11日 | STM32开发笔记72: 使用命名空间解决类名冲突问题
2020-03-11 来源:eefocus
单片机型号:STM32L053R8T6
在程序设计中,使用了两个类,这两个类都有引脚定义并同名,程序如下:
#ifndef E32_400T20S_H_
#define E32_400T20S_H_
#include "io.h"
#include "mini_uart.h"
#ifdef __cplusplus
extern "C"{
class CM0:public CIO_Output
{
public:
CM0(void);
};
class CM1:public CIO_Output
{
public:
CM1(void);
};
class CE32_400t20s:public CMiniUART
{
public:
CM0 M0;
CM1 M1;
public:
CE32_400t20s(void);
void ReadParameter(void);
void WriteParameter(uint8_t u8_CommunicationChannel);
void SetMode(uint8_t u8_Mode);
void Restart(void);
};
}
#endif
#endif
#ifndef E32_433T30S_H_
#define E32_433T30S_H_
#include "io.h"
#include "mini_uart.h"
#ifdef __cplusplus
extern "C"{
class CM0:public CIO_Output
{
public:
CM0(void);
};
class CM1:public CIO_Output
{
public:
CM1(void);
};
class CE32_433T30S:public CMiniUART
{
public:
CM0 M0;
CM1 M1;
public:
CE32_433T30S(void);
void ReadParameter(void);
void WriteParameter(uint8_t u8_CommunicationChannel);
void SetMode(uint8_t u8_Mode);
void Restart(void);
};
}
#endif
#endif
当程序中同时包含这两个头文件时,由于CM0和CM1在两个类中同名,导致编译错误。
解决上述问题的方法是使用命名空间。
所谓命名空间,实际上是一种由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其它全局实体分隔开来。
可以采取下述方法加入命名空间:
namespace e32_433t30s
{
class CM0:public CIO_Output
{
public:
CM0(void);
};
class CM1:public CIO_Output
{
public:
CM1(void);
};
}
加入命名空间后,采取下述方法进行对象的声明:
e32_433t30s::CM0 M0;
e32_433t30s::CM1 M1;
采取下述方法实现构造函数:
e32_433t30s::CM0::CM0(void):CIO_Output(E32_433T30S_M0_PORT, E32_433T30S_M0_PIN, low) {}
e32_433t30s::CM1::CM1(void):CIO_Output(E32_433T30S_M1_PORT, E32_433T30S_M1_PIN, low) {}
至此,就可以同时使用CE32_400t20s和CE32_433T30S两个类,不再冲突。
史海拾趣
|
汽车环境的宽工作电压要求、大瞬变电压以及大温度漂移等因素共同作用下,电子系统面临着严酷的条件,本文介绍如何在性能要求变得愈加苛刻的条件下,设计多个电源电压以满足汽车电子系统不同部分的要求。 ...… 查看全部问答> |
|
贴片电阻电容功率与尺寸对应表 电阻封装尺寸与功率关系,通常来说: 0201 1/20W 0402 1/16W 0603 1/10W 0805 1/8W 1206 1/4W 电容电阻外形尺寸与封装的对应关系是: 0402=1.0x0.5 0603=1.6x0.8 0805=2.0x1.2 1206=3.2x1.6 1210=3.2x2.5 1 ...… 查看全部问答> |
|
功率MOSFET具有导通电阻低、负载电流大的优点,因而非常适合用作开关电源(switch-mode power supplies,SMPS)的整流组件,不过,在选用MOSFET时有一些注意事项。 功率MOSFET和双极型晶体管不同,它的栅极电容比较大,在导通之前要 ...… 查看全部问答> |
|
目前手头有个项目使用omap3530做了一个显示器,采用wince系统,使用的是广州英码的核心板,本来厂家给定制内核但是不知为什么系统总是不稳定,现在想找一个熟悉wince的高手(要求人在北京)帮忙搞清楚什么原因,或者重新裁剪一下bsp,系统功能很简 ...… 查看全部问答> |
|
近期用atmega16 自身的ad测试陀螺仪,在测试的时候发现,当把ADC0接地时 LCD1602显示AD转换后的值为0096,接VCC=AVCC时 显示0993 这不对啊 应该是0和1023啊,这是程序 DDRA&=0xfe; PORTA&=0xfe; SF ...… 查看全部问答> |




