-1

我正在尝试为 Crazyradio PA 编译固件(但问题并非特定于它),我在其中添加了我需要的 Nordic Semiconductor SDK 的库。

该库最初打算在 Keil µVision IDE 下编译,所以我自然而然地更改了代码中的所有内容以使其与 SDCC 一起工作而没有太多麻烦,但是一个简单的指针定义让我很苦恼。SDCC 编译器给了我这个错误:

syntax error: token -> 'unsigned' ; column 10

对应于代码中的这一行:

unsigned char * buf = (unsigned char *)pbuf;

pbuf 是一个无符号字符指针,作为所有这些代码所在的函数的参数传递。

我尝试了以下方法,但未成功:

  • 改变 buf 的数据类型(随便改,看看而已)
  • 通过注释前后行来隔离问题
  • 分配一个简单的值而不是 (unsigned char *)pbuf

问题仍然存在(对于数据类型的差异,当然也会发生变化)。解决方案可能很简单,但我的想法很短,而且我只是一个对 SDCC 几乎没有经验的实习生,所以我希望你能放纵一下。

再次感谢,请教育我做错了什么!:)

4

1 回答 1

3

检查SDCC 文档是否符合标准 - 它在所有模式中都有一些相当严重的偏差 - 特别是在第 3.1.3 节中:

在此处输入图像描述

您的声明遵循同一范围块内的非声明。将所有声明移动到作用域块的顶部或开始一个新的作用域块:

memtype = *(unsigned char*)(&pbuf);

// Start scope block for buf scope...
{
    unsigned char * buf = (unsigned char *)pbuf;

    // buf accessible on this scope only
    ...

}
于 2018-01-05T11:40:30.853 回答