gpt4 book ai didi

c - 我正在使用 CodeWarrior 的 MC9S08DZ60.h 创建 Visual Studio 项目我收到错误 C2054 : expected '(' to follow '_PTDD'

转载 作者:行者123 更新时间:2023-11-30 14:24:16 27 4
gpt4 key购买 nike

我正在使用CodeWarriorMC9S08DZ60.h创建 Visual Studio 项目。我得到:

error C2054: expected '(' to follow '_PTDD'`.

MC9S08DZ60.hmicrocontroller 的头文件MC9S08DZ60(来自Freescale Semiconductor):

typedef union {
byte Byte;
struct {
byte PTDDD0 :1; /* Data Direction for Port D Bit 0 */
byte PTDDD1 :1; /* Data Direction for Port D Bit 1 */
byte PTDDD2 :1; /* Data Direction for Port D Bit 2 */
byte PTDDD3 :1; /* Data Direction for Port D Bit 3 */
byte PTDDD4 :1; /* Data Direction for Port D Bit 4 */
byte PTDDD5 :1; /* Data Direction for Port D Bit 5 */
byte PTDDD6 :1; /* Data Direction for Port D Bit 6 */
byte PTDDD7 :1; /* Data Direction for Port D Bit 7 */
} Bits;
} PTDDDSTR;
#ifndef MXVDEV //sri
extern volatile PTDDDSTR _PTDDD @0x00000007;
#else
PTDDDSTR _PTDDD;
#endif
#define PTDDD _PTDDD.Byte
#define PTDDD_PTDDD0 _PTDDD.Bits.PTDDD0
#define PTDDD_PTDDD1 _PTDDD.Bits.PTDDD1
#define PTDDD_PTDDD2 _PTDDD.Bits.PTDDD2
#define PTDDD_PTDDD3 _PTDDD.Bits.PTDDD3
#define PTDDD_PTDDD4 _PTDDD.Bits.PTDDD4
#define PTDDD_PTDDD5 _PTDDD.Bits.PTDDD5
#define PTDDD_PTDDD6 _PTDDD.Bits.PTDDD6
#define PTDDD_PTDDD7 _PTDDD.Bits.PTDDD7

最佳答案

Codewarrior 寄存器映射不遵循 C 标准。用于在特定地址分配变量的 @ 运算符不是标准的,除 int 之外的任何类型的位域也不是标准的。

他们使用非标准语法的原因是因为他们想要生成寄存器的调试信息,以便用户可以在调试器中查看它们。您可以使用标准 C 手动定义它们:

#define PTDDD (*(volatile unsigned char*)0x0007)

但是如果您打算在寄存器映射中定义所有寄存器,那么这将需要相当多的工作。

就我个人而言,我讨厌非标准语法,所以我使用自己编写的一个小程序来解析 pdf 手册,并根据手册中的名称生成具有与上述相同语法的寄存器映射。

<小时/>

但是...您为什么要在 Windows 中编译 MCU 寄存器映射?这没有任何意义。 Visual Studio 对飞思卡尔微 Controller 的了解是无效的,因此无法为其生成任何二进制文件。

关于c - 我正在使用 CodeWarrior 的 MC9S08DZ60.h 创建 Visual Studio 项目我收到错误 C2054 : expected '(' to follow '_PTDD' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12000278/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com