【发布时间】:2012-09-20 02:40:24
【问题描述】:
我正在尝试使用新编译器(C++ 编译器,在 Visual Studio 下使用 VisualGDB)为德州仪器 MSP430 微控制器编译一个经过验证的真实固件。
此固件的所有先前版本均使用 C 编译器编译,零错误和零警告。从 C 编译器到 C++ 编译器的更改一定是我的问题的原因。 (用C编译器编译的代码已经运行了五年没有问题。)
鉴于此代码 sn-p:
#include <msp430x14x.h>
WDTCTL = WDTPW+WDTHOLD;
我收到此错误:
错误:'WDTCTL' 没有命名类型 c:\msptest\LedBlink\LedBlink.cpp
WDTCLT 在 msp430x14x.h 中声明。
有人可以指点我正确的方向吗?
【问题讨论】:
-
#define WDTCTL_ 0x0120 /* 看门狗定时器控制 */ sfrw(WDTCTL, WDTCTL_);
-
那是不符合标准的代码。您需要将类型
int添加到该声明中。 -
C 不是 C++ 的子集。没有理由期望它能够正常工作,即使它可以编译。 C 和 C++ 之间有许多微妙而奇怪的区别。例如,
'a'在 C++ 中的类型为char,在 C 中为int。 -
您给我们的定义定义了 WDTCTL_。 WDTCTL 是如何定义的?您还可以给我们更多关于
WDTCTL = WDTPW+WDTHOLD;的背景信息吗?它在一个函数中吗?是全局声明的吗? -
您需要明确定义 C 编译器(供应商/版本)和 C++ 编译器。将信息添加到问题中,而不是作为评论 - 您之前添加的评论也是如此。