为什么HardwareSetup函数需要用extern c来修饰
本帖最后由 zjtzlqr 于 2013-2-28 19:02 编辑#ifdef __cplusplus
extern "C"
{
#endif
extern void HardwareSetup(void);
#ifdef __cplusplus
}
#endifHardwareSetup函数的主要内容是一些mcu外设的配置
MSTCR1.BIT.MSTDTC = 1;
MSTCR1.BIT.MSTAD1 = 1;
MSTCR1.BIT.MSTDA = 1;
MSTCR2.BIT.MSTICSU = 0;
MSTCR2.BIT.MSTSCI3_1 = 0;
MSTCR2.BIT.MSTSCI3_2 = 0;
MSTCR2.BIT.MSTSCI3_3 = 0;
renesas系列单片机中为什么HardwareSetup函数需要用extern c来修饰extern void HardwareSetup(void);
难道这个配置硬件用的函数不是用c语言编译的而是用c++来编译的 c++来编译c,就要02.extern "C" cnxh 发表于 2013-2-28 19:20 static/image/common/back.gif
c++来编译c,就要02.extern "C"
问题是瑞萨的这个编译器是c++的编译器吗? 有没有知道这方面知识的人 C++支持重载,为了区别各个重载函数,其编译器函数名修饰约定规则和C语言编译器有点不一样
使用extern "C"就是叫C++编译器对某个函数或者某几个函数使用C编译器函数名修饰约定规则
从而避免同一个函数在C编译器编译出来的object文件和C++编译器编译出来的object文件中函数符号名称不一样,导致链接失败 瑞萨高端的单片机都是用gcc的,当然支持c++了。
页:
[1]